python最优传输库

POT的Python项目详细描述


pot:python最优传输

pypi versionanaconda cloud构建状态documentation statusdownloadsanaconda downloadslicense

这个开源的python库为与信号、图像处理和机器学习的最佳传输相关的优化问题提供了多个解决方案。

它提供以下解算器:

  • 线性程序的OT网络流解算器/土方移动器距离[1]。
  • 熵正则化解算器与sinkhorn knopp算法[2]和稳定版本[9][10]和贪婪sinkhorn[22]具有可选的gpu实现(需要cupy)。
  • kl和平方l2正则化的光滑最优传输解(对偶和半对偶)[17]。
  • 非正则化wasserstein重心[16]与lp解算器(仅小规模)。
  • 对wasserstein重心[3]、卷积重心[21]和分解重心[4]的bregman投影。
  • 群套索正则化域自适应的最优传输[5]
  • 正则OT[7]的条件梯度[6]和广义条件梯度。
  • 线性OT[14]和联合OT矩阵及映射估计[8]。
  • wasserstein判别分析[11](需要autograd+pymanopt)。
  • gromov-wasserstein距离和重心([13]和正则化的[12])
  • 大规模最优运输的随机优化(半对偶问题[18]和对偶问题[19])
  • 非正规免费支持wasserstein重心[20]。

示例文件夹中提供了一些演示(python和jupyter笔记本格式)。

使用并引用工具箱

如果您在研究中使用此工具箱并发现其有用,请使用以下bibtex引用pot:

@misc{flamary2017pot,
title={POT Python Optimal Transport library},
author={Flamary, R{'e}mi and Courty, Nicolas},
url={https://github.com/rflamary/POT},
year={2017}
}

安装

这个库已经在linux、macosx和windows上进行了测试。它需要一个C++编译器来使用EMD求解器,并且依赖于下面的Python模块:

  • 纽比(>;=1.11)
  • scipy(>;=1.0)
  • cython(>;=0.23)
  • matplotlib(>;=1.5)
< H4>PIP安装

您可以使用以下命令通过pypi安装工具箱:

pip install POT

或者下载最新版本,然后运行:

python setup.py install --user # for user install (no root)

装有康达锻造炉的蟒蛇装置

如果您使用anaconda python发行版,pot可以在conda forge中找到。要安装它和所需的依赖项:

conda install -c conda-forge pot

安装后检查

正确安装后,您应该能够导入模块而不会出错:

importot

请注意,为了便于访问,模块名称为OT,而不是POT。

依赖关系

一些子模块需要额外的依赖项,下面将讨论这些依赖项

  • ot.dr(wasserstein降维)取决于autograd和pymanopt,可以安装:
pip install pymanopt autograd
  • ot.gpu(gpu加速OT)取决于cupy,必须按照本页的说明安装cupy。

显然,您需要安装CUDA和兼容的GPU。

示例

简短示例

  • 导入工具箱
importot
  • 计算wasserstein距离
# a,b are 1D histograms (sum to 1 and positive)# M is the ground cost matrixWd=ot.emd2(a,b,M)# exact linear programWd_reg=ot.sinkhorn2(a,b,M,reg)# entropic regularized OT# if b is a matrix compute all distances to a and return a vector
  • 计算OT矩阵
# a,b are 1D histograms (sum to 1 and positive)# M is the ground cost matrixT=ot.emd(a,b,M)# exact linear programT_reg=ot.sinkhorn(a,b,M,reg)# entropic regularized OT
  • 计算wasserstein重心
@misc{flamary2017pot,
title={POT Python Optimal Transport library},
author={Flamary, R{'e}mi and Courty, Nicolas},
url={https://github.com/rflamary/POT},
year={2017}
}
0

示例和笔记本

examples文件夹包含库的几个示例和用例。完整的文档可在readthedocs上获得

下面是python笔记本的列表,如果您想快速浏览,请点击这里

您还可以使用jupyter nbviewer查看笔记本。

致谢

这个库的贡献者是:

这个工具箱从开源研究中受益匪浅,我们要感谢以下人员(以各种语言)提供了一些代码:

  • gabriel peyre(在Matlab中为wasserstein重心)
  • ="http://LIr.CNR.FR/%7EnBeNeNel/"Re="NoFoLoLy"> Nicolas Bonneel (C++ EMD代码)
  • marco cuturi(Matlab/CUDA中的sinkhorn knopp)

贡献和行为准则

我们欢迎您的每一项贡献,并应遵守贡献指南。项目的每个成员都应遵守《行为准则》。

支架

您可以提出问题并参加开发讨论:

  • 在pot slack频道上
  • 在pot上,邮件列表

您还可以在github问题中发布错误报告和功能请求。请务必先阅读我们的指导原则。

参考文献

[1]Bonneel,N.,Van de Panne,M.,Paris,S.,和Heidrich,W.(2011年12月)。使用拉格朗日质量输运的位移插值。在ACM图形事务(TOG)中(第30卷,第6期,第158页)。ACM.

[2]Cuturi,M.(2013年)。伸角距离:最佳传输的光速计算。神经信息处理系统进展(2292-2300页)。

[3]Benamou,J.D.,Carlier,G.,Cuturi,M.,Nenna,L.,和Peyre,G.(2015年)。常规运输问题的迭代bregman预测。暹罗科学计算杂志,37(2),A1111-A1138。

[4]S.Nakhostin,N.Courty,R.Flamary,D.Tuia,T.Corpetti,通过最佳传输进行监督行星分解,高光谱图像和信号处理上的妓女:遥感进化(耳语),2016。

[5]N.Courty;R.Flamary;D.Tuia;A.Rakotomamonjy,域适配的最佳传输,《IEEE模式分析和机器智能交易》,第99卷,第1-1页

[6]Ferradans,S.,Papadakis,N.,Peyre,G.,和Aujol,J.F.(2014年)。规范化离散最优传输。暹罗成像科学杂志,7(3),1853-1882。

〔7〕拉科Tomamonjy,A.,Flamary,R.,&Courty,N.(2015年)。广义条件梯度:收敛性和应用分析。arxiv预印本arxiv:1510.06567。

[8]M.Perrot,N.Courty,R.Flamary,A.Habrard(2016),离散最优传输的映射估计,神经信息处理系统(NIPS)。

[9]Schmitzer,B.(2016年)。熵正则传输问题的稳定稀疏缩放算法。arxiv预印本arxiv:1610.06519。

[10]Chizat,L.,Peyre,G.,Schmitzer,B.,&Vialard,F.X.(2016年)。针对不平衡传输问题的缩放算法。arxiv预印本arxiv:1607.05816。

[11]Flamary,R.,Cuturi,M.,Courty,N.,和Rakotomamonjy,A.(2016年)。wasserstein判别分析。arxiv预印本arxiv:1608.08063。

[12]Gabriel Peyre、Marco Cuturi和Justin Solomon(2016年),Gromov Wasserstein平均内核和距离矩阵机器学习国际会议(ICML)。

[13]Mémoli,法昆多(2011年)。gromov–wasserstein距离和对象匹配的度量方法。计算数学基础11.4:417-487。

[14]Knott,M.and Smith,C.S.(1984年)。关于分布的最佳映射,《优化理论与应用杂志》第43卷。

[15]Peyré,G.,&Cuturi,M.(2018年)。计算优化传输

[16]Agueh,M.,&Carlier,G.(2011年)。瓦瑟斯坦空间中的重心。暹罗数学分析杂志,43(2),904-924。

[17]Blondel,M.,Seguy,V.,&Rolet,A.(2018年)。平滑稀疏的最佳传输。第二十一届人工智能与统计国际会议(AISTATS)会议记录。

[18]Genevay,A.,Cuturi,M.,Peyre,G.&Bach,F.(2016)大规模最优运输的随机优化。神经信息处理系统进展(2016年)。

[19]Seguy,V.,Bhushan Damodaran,B.,Flamary,R.,Courty,N.,Rolet,A.&;Blondel,M.大规模最优传输和映射估计。国际学习代表大会(2018年)

[20]Cuturi,M.和Doucet,A.(2014)快速计算Wasserstein重心。机器学习国际会议

[21]Solomon,J.,de Goes,F.,Peyre,G.,Cuturi,M.,Butscher,A.,Nguyen,A.&Guibas,L.(2015年)。卷积wasserstein距离:几何域上的有效最优传输。ACM图形事务(TOG),34(4),66。

[22]J.Altschuler,J.Weed,P.Rigollet,(2017年)通过sinkhorn迭代实现最佳传输的近线性时间近似算法,Advanc神经信息加工中的es压力系统(NIPS)31

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript如何找到socket。同一局域网上的IO服务器?   将Java代码格式化为Word/RTF格式   java学习对象以及如何将分配的变量封装到私有变量   java Websocket客户端不在Tomcat中工作   java如何在点击按钮时打开本机表情键盘?   java使用哪个Maven GlassFish插件?   Eclipse Java构建路径不允许添加外部JAR   继承Java6集合。勾选适当的用法   JavaApacheDateUtils:使用多个模式解析日期   java hibernate如何生成查询?   具有id或链接的java Dropbox下载文件或文件夹   java模态对话框未在PrimeFaces 5上显示   java将类对象转换为人类可读的字符串   更新数据库中字段的java通用方法   java无法通过Apache Tomcat访问网络文件夹