欧氏距离matlab代码Tensorflow_Pytorch_Sinkhorn_OT
用于计算两个离散分布之间的最佳运输(OT)距离的Sinkhorn算法[1]的Tensorflow(1.0或2.0)和Pytorch实现。
概述
这些实现是从Cuturi到Tensorflow和Pytorch的改编,它们能够利用其自动差异功能和在GPU上运行的能力。
这些实现并行计算N对离散分布对(即,概率向量)之间的OT距离。
它对应于Cuturi实施中的“
N倍1-vs-1模式”。
输入
a
:D_1×N矩阵,每列是D_1维(规格化)概率向量。
b
:D_2×N矩阵,每列是D_2维(规格化)概率向量。
M
:D_1×D_2矩阵,成本函数正,对角线应为零。
lambda_sh,
numItermax,
stopThr
:算法的参数,与Cuturi的实现相同。
a,
b,
M是Tensorflow或Pytorch的张量,因此,反向传播适用。
输出
该算法输出一个N维矢量,第n个元素是a[:,n]与b[:,n]之间的(近似)OT距离。
测试
在test.py文件中,提供了Cuturi的Matlab实现与我
2023-02-09 17:49:50
5KB
系统开源
1