注意
跳转到末尾 以下载完整示例代码。
筛选的最优传输(Screenkhorn)
这个例子说明了Screenkhorn [26]的计算。
[26] Alaya M. Z., Bérar M., Gasso G., Rakotomamonjy A. (2019). 筛选Sinkhorn算法用于正则化最优传输, 神经信息处理系统进展 33 (NeurIPS).
# Author: Mokhtar Z. Alaya <mokhtarzahdi.alaya@gmail.com>
#
# License: MIT License
import numpy as np
import matplotlib.pylab as pl
import ot.plot
from ot.datasets import make_1D_gauss as gauss
from ot.bregman import screenkhorn
生成数据
绘制分布和损失矩阵
(<Axes: >, <Axes: >, <Axes: >)
解决Screenkhorn
# Screenkhorn
lambd = 2e-03 # entropy parameter
ns_budget = 30 # budget number of points to be kept in the source distribution
nt_budget = 30 # budget number of points to be kept in the target distribution
G_screen = screenkhorn(
a, b, M, lambd, ns_budget, nt_budget, uniform=False, restricted=True, verbose=True
)
pl.figure(4, figsize=(5, 5))
ot.plot.plot1D_mat(a, b, G_screen, "OT matrix Screenkhorn")
pl.show()

/home/circleci/project/ot/bregman/_screenkhorn.py:132: UserWarning: Bottleneck module is not installed. Install it from https://pypi.org/project/Bottleneck/ for better performance.
warnings.warn(
epsilon = 0.020986042861303855
kappa = 3.7476531411890917
Cardinality of selected points: |Isel| = 30 |Jsel| = 30
脚本的总运行时间: (0 分钟 0.175 秒)

