当前位置: 首页 > news >正文

网站 seowordpress自媒体博客模板

网站 seo,wordpress自媒体博客模板,怎么用wordpress 建站,黑链 对网站的影响SiknHorn算法是一个快速求解离散优化问题的经典算法,特别适用于计算离散分布之间的**最优传输(Optimal Transport)**距离; 最优传输问题介绍 计算两个概率分布 P 和 Q 之间的传输成本,通常表示为: 是传输…

        SiknHorn算法是一个快速求解离散优化问题的经典算法,特别适用于计算离散分布之间的**最优传输(Optimal Transport)**距离;

最优传输问题介绍

计算两个概率分布 P 和 Q 之间的传输成本,通常表示为:

min_{\pi \in U(P,Q)} \sum_{i,j} \pi_{ij} C_{ij}

        C_{ij}是传输代价矩阵 

        π 是联合分布(运输计划),满足边缘分布等于 P和 Q;

        U(P,Q) 是所有满足边缘分布的有效运输计划的集合;

        直接求解此问题的复杂度较高,为 O\{n^3\}。Sinkhorn算法通过在目标函数中引入正则化项(如Kullback-Leibler散度)将问题转化为更易解的形式.

Sinkhorn正则化的形式

引入熵正则化后,问题变为:

min_{\pi \in U(P,Q)} \sum_{i,j} \pi_{ij} C_{ij} + \epsilon \sum_{ij} \pi_{ij}log(\pi_{ij})

其中 ϵ>0 是正则化参数,用来控制正则化项的权重。此时的优化目标是凸的,可以通过迭代方法快速求解。

算法核心思想

        Sinkhorn算法利用行列缩放的思想 (行列缩放的思想-CSDN博客,将优化问题转化为矩阵的归一化迭代:

        初始化:构造一个权重矩阵 K,其元素为: K_{ij} = e^{-\frac{C_ij}{\epsilon }}

         标量因子: 定义标量因子 u,v 来调整 K的行列和,使其分别等于分布 P和 Q:

        迭代更新:

u \leftarrow \frac{P}{Kv} v \leftarrow \frac{Q}{K^Tu}

        其中 / 表示逐元素相除.

        重复迭代直到收敛。

算法步骤

        输入:代价矩阵 C,分布 P,Q, 正则化参数 ϵ,收敛阈值 τ

        初始化:设置 u=1(全为1的向量),计算 K。

        循环

        u \leftarrow \frac{P}{Kv} v \leftarrow \frac{Q}{K^Tu}

        检查收敛:判断 \pi = diag(u) Kdiag(v) 是否满足精度 τ。 

                精度 τ是一个用于判断算法是否收敛的阈值。它控制的是最终结果与目标分布之间的误差大小:

                误差=||\pi_r - P|| + ||\pi_c - Q||

                \pi_r是当前矩阵的行和;

                P 是目标行和;

                \pi_c是当前矩阵的列和;

                Q是目标列和;

                ||\cdot ||表示向量的范数(通常为 ℓ1 或 ℓ2​ 范数)。                

        输出:最终的传输计划 π 和传输成本。

import numpy as npdef sinkhorn_algorithm(C, r, c, epsilon=1e-3, max_iter=1000, tol=1e-6):"""Sinkhorn算法计算最优传输问题的近似解。参数:C (numpy.ndarray): 传输代价矩阵 (n, m)。r (numpy.ndarray): 源分布 (n,)。c (numpy.ndarray): 目标分布 (m,)。epsilon (float): 正则化参数,默认为 1e-3。max_iter (int): 最大迭代次数。tol (float): 收敛阈值,默认为 1e-6。返回:pi (numpy.ndarray): 近似的最优传输计划矩阵。transport_cost (float): 最优传输距离。"""# 确保分布为 numpy 数组并且是列向量形式r = np.array(r, dtype=np.float64)c = np.array(c, dtype=np.float64)# 初始化 K 矩阵,K[i, j] = exp(-C[i, j] / epsilon)K = np.exp(-C / epsilon)# 初始化缩放因子 u 和 vu = np.ones_like(r)v = np.ones_like(c)# 迭代更新 u 和 vfor iteration in range(max_iter):u_prev = u.copy()  # 保存上一轮的 u 以判断收敛u = r / (K @ v)  # 更新行缩放因子v = c / (K.T @ u)  # 更新列缩放因子# 判断是否收敛if np.allclose(u, u_prev, atol=tol):break# 计算最终的传输计划矩阵 pipi = np.diag(u) @ K @ np.diag(v)# 计算最优传输成本transport_cost = np.sum(pi * C)return pi, transport_cost# 示例用法
if __name__ == "__main__":# 定义代价矩阵 (3x3)C = np.array([[4, 8, 6],[3, 7, 5],[2, 4, 6]])# 定义源分布和目标分布r = np.array([0.5, 0.3, 0.2])  # 源分布c = np.array([0.4, 0.4, 0.2])  # 目标分布# 调用 Sinkhorn 算法pi, cost = sinkhorn_algorithm(C, r, c, epsilon=1e-2, max_iter=500, tol=1e-6)# 输出结果print("传输计划矩阵 pi:")print(pi)print(f"最优传输距离: {cost}")

http://www.yayakq.cn/news/581185/

相关文章:

  • 免费网站重生做军嫂市政工程建设规范免费下载网站
  • 网站设计是不是会要用代码做营销型网站建设 深圳信科
  • 网站开发范本如何手机网站建立
  • 网站开发时间进度表手机微网站怎么制作
  • 泰安网站建设xtempire网站 网页区别是什么
  • 网站排名优化外包发稿什么意思
  • 酒泉网站建设服务企业网站建设有哪些好处
  • 林壑地板北京网站建设网站屏蔽国内ip
  • 四川建设机械网站百度网首页
  • 怎样建设一个自己的网站做决定的网站
  • 怎么检查网站有没有被挂马小程序导航wordpress
  • 洞口建设局网站深圳做互联网教网站公司
  • 企业网站推广方案的策划十大跨境电商公司
  • 建设部颁发的证书网站网站规划说明书范文
  • 网站默认地区数据修改汽车是怎么做的视频网站
  • 网站开发用什么语言比较好6黄页网站建设
  • 网站后台管理图片水印怎么做北京设计公司官网
  • 深圳住房宝安和建设局网站wordpress支持大文件上传
  • 教育技术专业网站开发课程网页制作培训的课程
  • 石家庄网站建设网站建设房建设计网站
  • 免费ui设计网站南宁百度网站公司吗
  • .net网站模版wordpress动态图片不显示
  • 蛋白质结构预测工具网站开发visio网站建设流程图
  • wap网站前台模板一建延期最新消息2022
  • 怎么用ftpxp做网站网站被百度k是什么意思
  • 怎么找一家公司的网站互诺科技做网站怎么样
  • 哪些网站做外贸wordpress 知识库模板
  • 制作的网站如何访问做淘客的网站有哪些
  • 智能建造论文百度搜索关键词排名优化推广
  • 网站建设 多少钱钓鱼网站制作的报告