注意
点击 这里 下载完整示例代码
一维筛选最优传输
这个例子说明了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
生成数据
绘制分布和损失矩阵
解决Screenkhorn
# Screenkhorn
lambd = 2e-03 # entropy parameter
ns_budget = 30 # budget number of points to be keeped in the source distribution
nt_budget = 30 # budget number of points to be keeped 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.py:3318: 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.251 秒)

