ot.factored

分解OT求解器(低秩,成本或OT计划)

函数

ot.factored.factored_optimal_transport(Xa, Xb, a=None, b=None, reg=0.0, r=100, X0=None, stopThr=1e-07, numItermax=100, verbose=False, log=False, **kwargs)[源]

解决分解的OT问题并返回OT计划和中间分配

此函数解决以下OT问题 [40]_

\[\mathop{\arg \min}_\mu \quad W_2^2(\mu_a,\mu)+ W_2^2(\mu,\mu_b)\]

其中 :

  • \(\mu_a\)\(\mu_b\) 是经验分布。

  • \(\mu\) 是一个具有 r 个样本的经验分布

并返回两个OT计划之间

注意

此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。

使用条件梯度算法来解决在 [39]中提出的问题。

Parameters:
  • Xa ((ns,d) 数组类型, 浮点数) – 源样本

  • Xb ((nt,d) 数组类型, 浮点数) – 目标样本

  • a ((ns,) 数组类似, 浮点数) – 源直方图(如果空列表,则均匀权重)

  • b ((nt,) 类数组, 浮点数) – 目标直方图(如果为空列表则为均匀权重)

  • numItermax (int, 可选) – 最大迭代次数

  • stopThr (float, 可选) – 相对变化的停止阈值 (>0)

  • verbose (bool, 可选) – 在迭代过程中打印信息

  • log (bool, 可选) – 如果为真,则记录日志

Returns:

  • Ga (数组类型,形状为 (ns, r)) – 源与中间分布之间的最优运输矩阵

  • Gb (数组类型,形状为 (r, nt)) – 中间与目标分布之间的最优运输矩阵

  • X (数组类型,形状为 (r, d)) – 中间分布的支持

  • log (字典,可选) – 如果输入日志为真,则返回包含成本和对偶变量及退出状态的字典

参考文献

另请参见

ot.bregman.sinkhorn

熵正则化最优传输

ot.optim.cg

通用正则化OT

ot.factored.factored_optimal_transport(Xa, Xb, a=None, b=None, reg=0.0, r=100, X0=None, stopThr=1e-07, numItermax=100, verbose=False, log=False, **kwargs)[源]

解决分解的OT问题并返回OT计划和中间分配

此函数解决以下OT问题 [40]_

\[\mathop{\arg \min}_\mu \quad W_2^2(\mu_a,\mu)+ W_2^2(\mu,\mu_b)\]

其中 :

  • \(\mu_a\)\(\mu_b\) 是经验分布。

  • \(\mu\) 是一个具有 r 个样本的经验分布

并返回两个OT计划之间

注意

此函数与后端兼容,可用于所有兼容后端的数组。但该算法使用C++ CPU后端,这可能导致在GPU数组上产生复制开销。

使用条件梯度算法来解决在 [39]中提出的问题。

Parameters:
  • Xa ((ns,d) 数组类型, 浮点数) – 源样本

  • Xb ((nt,d) 数组类型, 浮点数) – 目标样本

  • a ((ns,) 数组类似, 浮点数) – 源直方图(如果空列表,则均匀权重)

  • b ((nt,) 类数组, 浮点数) – 目标直方图(如果为空列表则为均匀权重)

  • numItermax (int, 可选) – 最大迭代次数

  • stopThr (float, 可选) – 相对变化的停止阈值 (>0)

  • verbose (bool, 可选) – 在迭代过程中打印信息

  • log (bool, 可选) – 如果为真,则记录日志

Returns:

  • Ga (数组类型,形状为 (ns, r)) – 源与中间分布之间的最优运输矩阵

  • Gb (数组类型,形状为 (r, nt)) – 中间与目标分布之间的最优运输矩阵

  • X (数组类型,形状为 (r, d)) – 中间分布的支持

  • log (字典,可选) – 如果输入日志为真,则返回包含成本和对偶变量及退出状态的字典

参考文献

另请参见

ot.bregman.sinkhorn

熵正则化最优传输

ot.optim.cg

通用正则化OT