-
Notifications
You must be signed in to change notification settings - Fork 1
/
readme.html
611 lines (576 loc) · 37 KB
/
readme.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>POT: Python Optimal Transport — POT Python Optimal Transport 0.8.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/sg_gallery.css" type="text/css" />
<link rel="stylesheet" href="_static/sg_gallery-binder.css" type="text/css" />
<link rel="stylesheet" href="_static/sg_gallery-dataframe.css" type="text/css" />
<link rel="stylesheet" href="_static/sg_gallery-rendered-html.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> POT Python Optimal Transport
</a>
<div class="version">
0.8.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="index.html">POT: Python Optimal Transport</a></li>
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quick start guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="all.html">API and modules</a></li>
<li class="toctree-l1"><a class="reference internal" href="auto_examples/index.html">Examples gallery</a></li>
<li class="toctree-l1"><a class="reference internal" href="releases.html">Releases</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">POT Python Optimal Transport</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> »</li>
<li>POT: Python Optimal Transport</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/readme.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="pot-python-optimal-transport">
<h1>POT: Python Optimal Transport<a class="headerlink" href="#pot-python-optimal-transport" title="Permalink to this headline"></a></h1>
<p><a class="reference external" href="https://badge.fury.io/py/POT"><img alt="PyPI version" src="https://badge.fury.io/py/POT.svg" /></a> <a class="reference external" href="https://anaconda.org/conda-forge/pot"><img alt="Anaconda Cloud" src="https://anaconda.org/conda-forge/pot/badges/version.svg" /></a> <a class="reference external" href="https://github.com/PythonOT/POT/actions"><img alt="Build Status" src="https://github.com/PythonOT/POT/workflows/build/badge.svg?branch=master&event=push" /></a> <a class="reference external" href="https://codecov.io/gh/PythonOT/POT"><img alt="Codecov Status" src="https://codecov.io/gh/PythonOT/POT/branch/master/graph/badge.svg" /></a>
<a class="reference external" href="https://pepy.tech/project/pot"><img alt="Downloads" src="https://pepy.tech/badge/pot" /></a> <a class="reference external" href="https://anaconda.org/conda-forge/pot"><img alt="Anaconda downloads" src="https://anaconda.org/conda-forge/pot/badges/downloads.svg" /></a> <a class="reference external" href="https://github.com/PythonOT/POT/blob/master/LICENSE"><img alt="License" src="https://anaconda.org/conda-forge/pot/badges/license.svg" /></a></p>
<p>This open source Python library provide several solvers for optimization
problems related to Optimal Transport for signal, image processing and
machine learning.</p>
<p>Website and documentation: <a class="reference external" href="https://PythonOT.github.io/">https://PythonOT.github.io/</a></p>
<p>Source Code (MIT): <a class="reference external" href="https://github.com/PythonOT/POT">https://github.com/PythonOT/POT</a></p>
<p>POT provides the following generic OT solvers (links to examples):</p>
<ul class="simple">
<li><p><a class="reference external" href="auto_examples/plot_OT_1D.html">OT Network Simplex
solver</a>
for the linear program/ Earth Movers Distance [1] .</p></li>
<li><p><a class="reference external" href="auto_examples/plot_optim_OTreg.html">Conditional
gradient</a>
[6] and <a class="reference external" href="auto_examples/plot_optim_OTreg.html">Generalized conditional
gradient</a>
for regularized OT [7].</p></li>
<li><p>Entropic regularization OT solver with <a class="reference external" href="auto_examples/plot_OT_1D.html">Sinkhorn Knopp
Algorithm</a>
[2] , stabilized version [9] [10] [34], greedy Sinkhorn [22] and
<a class="reference external" href="auto_examples/plot_screenkhorn_1D.html">Screening Sinkhorn
[26]</a>.</p></li>
<li><p>Bregman projections for <a class="reference external" href="auto_examples/barycenters/plot_barycenter_lp_vs_entropic.html">Wasserstein
barycenter</a>
[3], <a class="reference external" href="auto_examples/barycenters/plot_convolutional_barycenter.html">convolutional
barycenter</a>
[21] and unmixing [4].</p></li>
<li><p>Sinkhorn divergence [23] and entropic regularization OT from
empirical data.</p></li>
<li><p>Debiased Sinkhorn barycenters <a class="reference external" href="auto_examples/barycenters/plot_debiased_barycenter.html">Sinkhorn divergence
barycenter</a>
[37]</p></li>
<li><p><a class="reference external" href="auto_examples/plot_OT_1D_smooth.html">Smooth optimal transport
solvers</a>
(dual and semi-dual) for KL and squared L2 regularizations [17].</p></li>
<li><p>Non regularized <a class="reference external" href="auto_examples/barycenters/plot_barycenter_lp_vs_entropic.html">Wasserstein barycenters
[16]</a>)
with LP solver (only small scale).</p></li>
<li><p><a class="reference external" href="auto_examples/gromov/plot_gromov.html">Gromov-Wasserstein
distances</a>
and <a class="reference external" href="auto_examples/gromov/plot_gromov_barycenter.html">GW
barycenters</a>
(exact [13] and regularized [12]), differentiable using gradients
from</p></li>
<li><p><a class="reference external" href="auto_examples/gromov/plot_fgw.html#sphx-glr-auto-examples-plot-fgw-py">Fused-Gromov-Wasserstein distances
solver</a>
and <a class="reference external" href="auto_examples/gromov/plot_barycenter_fgw.html">FGW
barycenters</a>
[24]</p></li>
<li><p><a class="reference external" href="auto_examples/plot_stochastic.html">Stochastic
solver</a>
for Large-scale Optimal Transport (semi-dual problem [18] and dual
problem [19])</p></li>
<li><p><a class="reference external" href="auto_examples/gromov/plot_gromov.html">Stochastic solver of Gromov
Wasserstein</a>
for large-scale problem with any loss functions [33]</p></li>
<li><p>Non regularized <a class="reference external" href="auto_examples/barycenters/plot_free_support_barycenter.html">free support Wasserstein
barycenters</a>
[20].</p></li>
<li><p><a class="reference external" href="auto_examples/unbalanced-partial/plot_UOT_1D.html">Unbalanced
OT</a>
with KL relaxation and
<a class="reference external" href="auto_examples/unbalanced-partial/plot_UOT_barycenter_1D.html">barycenter</a>
[10, 25].</p></li>
<li><p><a class="reference external" href="auto_examples/unbalanced-partial/plot_partial_wass_and_gromov.html">Partial Wasserstein and
Gromov-Wasserstein</a>
(exact [29] and entropic [3] formulations).</p></li>
<li><p><a class="reference external" href="auto_examples/sliced-wasserstein/plot_variance.html">Sliced
Wasserstein</a>
[31, 32] and Max-sliced Wasserstein [35] that can be used for
gradient flows [36].</p></li>
<li><p><a class="reference external" href="https://pythonot.github.io/quickstart.html#solving-ot-with-multiple-backends">Several
backends</a>
for easy use of POT with
<a class="reference external" href="https://pytorch.org/">Pytorch</a>/<a class="reference external" href="https://github.com/google/jax">jax</a>/<a class="reference external" href="https://numpy.org/">Numpy</a>
arrays.</p></li>
</ul>
<p>POT provides the following Machine Learning related solvers:</p>
<ul class="simple">
<li><p><a class="reference external" href="auto_examples/domain-adaptation/plot_otda_classes.html">Optimal transport for domain
adaptation</a>
with <a class="reference external" href="auto_examples/domain-adaptation/plot_otda_classes.html">group lasso
regularization</a>,
<a class="reference external" href="auto_examples/domain-adaptation/plot_otda_laplacian.html">Laplacian
regularization</a>
[5] [30] and <a class="reference external" href="auto_examples/domain-adaptation/plot_otda_semi_supervised.html">semi supervised
setting</a>.</p></li>
<li><p><a class="reference external" href="auto_examples/domain-adaptation/plot_otda_linear_mapping.html">Linear OT
mapping</a>
[14] and <a class="reference external" href="auto_examples/domain-adaptation/plot_otda_mapping.html">Joint OT mapping
estimation</a>
[8].</p></li>
<li><p><a class="reference external" href="auto_examples/others/plot_WDA.html">Wasserstein Discriminant
Analysis</a>
[11] (requires autograd + pymanopt).</p></li>
<li><p><a class="reference external" href="auto_examples/domain-adaptation/plot_otda_jcpot.html">JCPOT algorithm for multi-source domain adaptation with target
shift</a>
[27].</p></li>
</ul>
<p>Some other examples are available in the
<a class="reference external" href="auto_examples/index.html">documentation</a>.</p>
<section id="using-and-citing-the-toolbox">
<h2>Using and citing the toolbox<a class="headerlink" href="#using-and-citing-the-toolbox" title="Permalink to this headline"></a></h2>
<p>If you use this toolbox in your research and find it useful, please cite
POT using the following reference from our <a class="reference external" href="https://jmlr.org/papers/v22/20-451.html">JMLR
paper</a>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Rémi Flamary, Nicolas Courty, Alexandre Gramfort, Mokhtar Z. Alaya, Aurélie Boisbunon, Stanislas Chambon, Laetitia Chapel, Adrien Corenflos, Kilian Fatras, Nemo Fournier, Léo Gautheron, Nathalie T.H. Gayraud, Hicham Janati, Alain Rakotomamonjy, Ievgen Redko, Antoine Rolet, Antony Schutz, Vivien Seguy, Danica J. Sutherland, Romain Tavenard, Alexander Tong, Titouan Vayer,
POT Python Optimal Transport library,
Journal of Machine Learning Research, 22(78):1−8, 2021.
Website: https://pythonot.github.io/
</pre></div>
</div>
<p>In Bibtex format:</p>
<div class="highlight-bibtex notranslate"><div class="highlight"><pre><span></span><span class="nc">@article</span><span class="p">{</span><span class="nl">flamary2021pot</span><span class="p">,</span>
<span class="na">author</span> <span class="p">=</span> <span class="s">{R{\'e}mi Flamary and Nicolas Courty and Alexandre Gramfort and Mokhtar Z. Alaya and Aur{\'e}lie Boisbunon and Stanislas Chambon and Laetitia Chapel and Adrien Corenflos and Kilian Fatras and Nemo Fournier and L{\'e}o Gautheron and Nathalie T.H. Gayraud and Hicham Janati and Alain Rakotomamonjy and Ievgen Redko and Antoine Rolet and Antony Schutz and Vivien Seguy and Danica J. Sutherland and Romain Tavenard and Alexander Tong and Titouan Vayer}</span><span class="p">,</span>
<span class="na">title</span> <span class="p">=</span> <span class="s">{POT: Python Optimal Transport}</span><span class="p">,</span>
<span class="na">journal</span> <span class="p">=</span> <span class="s">{Journal of Machine Learning Research}</span><span class="p">,</span>
<span class="na">year</span> <span class="p">=</span> <span class="s">{2021}</span><span class="p">,</span>
<span class="na">volume</span> <span class="p">=</span> <span class="s">{22}</span><span class="p">,</span>
<span class="na">number</span> <span class="p">=</span> <span class="s">{78}</span><span class="p">,</span>
<span class="na">pages</span> <span class="p">=</span> <span class="s">{1-8}</span><span class="p">,</span>
<span class="na">url</span> <span class="p">=</span> <span class="s">{http://jmlr.org/papers/v22/20-451.html}</span>
<span class="p">}</span>
</pre></div>
</div>
<section id="installation">
<h3>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h3>
<p>The library has been tested on Linux, MacOSX and Windows. It requires a
C++ compiler for building/installing the EMD solver and relies on the
following Python modules:</p>
<ul class="simple">
<li><p>Numpy (>=1.16)</p></li>
<li><p>Scipy (>=1.0)</p></li>
<li><p>Cython (>=0.23) (build only, not necessary when installing from pip
or conda)</p></li>
</ul>
</section>
</section>
<section id="pip-installation">
<h2>Pip installation<a class="headerlink" href="#pip-installation" title="Permalink to this headline"></a></h2>
<p>You can install the toolbox through PyPI with:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">pip install POT</span>
</pre></div>
</div>
<p>or get the very latest version by running:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">pip install -U https://github.com/PythonOT/POT/archive/master.zip # with --user for user install (no root)</span>
</pre></div>
</div>
</section>
<section id="anaconda-installation-with-conda-forge">
<h2>Anaconda installation with conda-forge<a class="headerlink" href="#anaconda-installation-with-conda-forge" title="Permalink to this headline"></a></h2>
<p>If you use the Anaconda python distribution, POT is available in
<a class="reference external" href="https://conda-forge.org">conda-forge</a>. To install it and the
required dependencies:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">conda install -c conda-forge pot</span>
</pre></div>
</div>
</section>
<section id="post-installation-check">
<h2>Post installation check<a class="headerlink" href="#post-installation-check" title="Permalink to this headline"></a></h2>
<p>After a correct installation, you should be able to import the module
without errors:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">ot</span>
</pre></div>
</div>
<p>Note that for easier access the module is named <code class="docutils literal notranslate"><span class="pre">ot</span></code> instead of
<code class="docutils literal notranslate"><span class="pre">pot</span></code>.</p>
<p>Some sub-modules require additional dependences which are discussed
below</p>
<ul class="simple">
<li><p><strong>ot.dr</strong> (Wasserstein dimensionality reduction) depends on autograd
and pymanopt that can be installed with:</p></li>
</ul>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pip install pymanopt autograd
</pre></div>
</div>
<ul class="simple">
<li><p><strong>ot.gpu</strong> (GPU accelerated OT) depends on cupy that have to be
installed following instructions on <a class="reference external" href="https://docs-cupy.chainer.org/en/stable/install.html">this
page</a>.
Obviously you will need CUDA installed and a compatible GPU. Note
that this module is deprecated since version 0.8 and will be deleted
in the future. GPU is now handled automatically through the backends
and several solver already can run on GPU using the Pytorch backend.</p></li>
</ul>
<section id="examples">
<h3>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h3>
<section id="short-examples">
<h4>Short examples<a class="headerlink" href="#short-examples" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><p>Import the toolbox</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">ot</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Compute Wasserstein distances</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># a,b are 1D histograms (sum to 1 and positive)</span>
<span class="c1"># M is the ground cost matrix</span>
<span class="n">Wd</span> <span class="o">=</span> <span class="n">ot</span><span class="o">.</span><span class="n">emd2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">M</span><span class="p">)</span> <span class="c1"># exact linear program</span>
<span class="n">Wd_reg</span> <span class="o">=</span> <span class="n">ot</span><span class="o">.</span><span class="n">sinkhorn2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">reg</span><span class="p">)</span> <span class="c1"># entropic regularized OT</span>
<span class="c1"># if b is a matrix compute all distances to a and return a vector</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Compute OT matrix</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># a,b are 1D histograms (sum to 1 and positive)</span>
<span class="c1"># M is the ground cost matrix</span>
<span class="n">T</span> <span class="o">=</span> <span class="n">ot</span><span class="o">.</span><span class="n">emd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">M</span><span class="p">)</span> <span class="c1"># exact linear program</span>
<span class="n">T_reg</span> <span class="o">=</span> <span class="n">ot</span><span class="o">.</span><span class="n">sinkhorn</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">reg</span><span class="p">)</span> <span class="c1"># entropic regularized OT</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Compute Wasserstein barycenter</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># A is a n*d matrix containing d 1D histograms</span>
<span class="c1"># M is the ground cost matrix</span>
<span class="n">ba</span> <span class="o">=</span> <span class="n">ot</span><span class="o">.</span><span class="n">barycenter</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">reg</span><span class="p">)</span> <span class="c1"># reg is regularization parameter</span>
</pre></div>
</div>
</section>
<section id="examples-and-notebooks">
<h4>Examples and Notebooks<a class="headerlink" href="#examples-and-notebooks" title="Permalink to this headline"></a></h4>
<p>The examples folder contain several examples and use case for the
library. The full documentation with examples and output is available on
<a class="reference external" href="https://PythonOT.github.io/">https://PythonOT.github.io/</a>.</p>
</section>
</section>
<section id="acknowledgements">
<h3>Acknowledgements<a class="headerlink" href="#acknowledgements" title="Permalink to this headline"></a></h3>
<p>This toolbox has been created and is maintained by</p>
<ul class="simple">
<li><p><a class="reference external" href="http://remi.flamary.com/">Rémi Flamary</a></p></li>
<li><p><a class="reference external" href="http://people.irisa.fr/Nicolas.Courty/">Nicolas Courty</a></p></li>
</ul>
<p>The contributors to this library are</p>
<ul class="simple">
<li><p><a class="reference external" href="http://alexandre.gramfort.net/">Alexandre Gramfort</a> (CI,
documentation)</p></li>
<li><p><a class="reference external" href="http://people.irisa.fr/Laetitia.Chapel/">Laetitia Chapel</a>
(Partial OT)</p></li>
<li><p><a class="reference external" href="http://perso.univ-st-etienne.fr/pem82055/">Michael Perrot</a>
(Mapping estimation)</p></li>
<li><p><a class="reference external" href="https://github.com/aje">Léo Gautheron</a> (GPU implementation)</p></li>
<li><p><a class="reference external" href="https://www.linkedin.com/in/nathalie-t-h-gayraud/?ppe=1">Nathalie
Gayraud</a>
(DA classes)</p></li>
<li><p><a class="reference external" href="https://slasnista.github.io/">Stanislas Chambon</a> (DA classes)</p></li>
<li><p><a class="reference external" href="https://arolet.github.io/">Antoine Rolet</a> (EMD solver debug)</p></li>
<li><p>Erwan Vautier (Gromov-Wasserstein)</p></li>
<li><p><a class="reference external" href="https://kilianfatras.github.io/">Kilian Fatras</a> (Stochastic
solvers)</p></li>
<li><p><a class="reference external" href="https://sites.google.com/site/alainrakotomamonjy/home">Alain
Rakotomamonjy</a></p></li>
<li><p><a class="reference external" href="https://tvayer.github.io/">Vayer Titouan</a> (Gromov-Wasserstein -,
Fused-Gromov-Wasserstein)</p></li>
<li><p><a class="reference external" href="https://hichamjanati.github.io/">Hicham Janati</a> (Unbalanced OT,
Debiased barycenters)</p></li>
<li><p><a class="reference external" href="https://rtavenar.github.io/">Romain Tavenard</a> (1d Wasserstein)</p></li>
<li><p><a class="reference external" href="http://mzalaya.github.io/">Mokhtar Z. Alaya</a> (Screenkhorn)</p></li>
<li><p><a class="reference external" href="https://ievred.github.io/">Ievgen Redko</a> (Laplacian DA, JCPOT)</p></li>
<li><p><a class="reference external" href="https://adriencorenflos.github.io/">Adrien Corenflos</a> (Sliced
Wasserstein Distance)</p></li>
<li><p><a class="reference external" href="https://hv0nnus.github.io/">Tanguy Kerdoncuff</a> (Sampled Gromov
Wasserstein)</p></li>
<li><p><a class="reference external" href="https://mhhuang95.github.io">Minhui Huang</a> (Projection Robust
Wasserstein Distance)</p></li>
</ul>
<p>This toolbox benefit a lot from open source research and we would like
to thank the following persons for providing some code (in various
languages):</p>
<ul class="simple">
<li><p><a class="reference external" href="http://gpeyre.github.io/">Gabriel Peyré</a> (Wasserstein Barycenters
in Matlab)</p></li>
<li><p><a class="reference external" href="https://mblondel.org/">Mathieu Blondel</a> (original implementation
smooth OT)</p></li>
<li><p><a class="reference external" href="http://liris.cnrs.fr/~nbonneel/">Nicolas Bonneel</a> ( C++ code for
EMD)</p></li>
<li><p><a class="reference external" href="http://marcocuturi.net/">Marco Cuturi</a> (Sinkhorn Knopp in
Matlab/Cuda)</p></li>
</ul>
</section>
<section id="contributions-and-code-of-conduct">
<h3>Contributions and code of conduct<a class="headerlink" href="#contributions-and-code-of-conduct" title="Permalink to this headline"></a></h3>
<p>Every contribution is welcome and should respect the <a class="reference external" href=".github/CONTRIBUTING.md">contribution
guidelines</a>. Each member of the project is
expected to follow the <a class="reference external" href=".github/CODE_OF_CONDUCT.md">code of conduct</a>.</p>
</section>
<section id="support">
<h3>Support<a class="headerlink" href="#support" title="Permalink to this headline"></a></h3>
<p>You can ask questions and join the development discussion:</p>
<ul class="simple">
<li><p>On the POT <a class="reference external" href="https://pot-toolbox.slack.com">slack channel</a></p></li>
<li><p>On the POT <a class="reference external" href="https://gitter.im/PythonOT/community">gitter channel</a></p></li>
<li><p>On the POT <a class="reference external" href="https://mail.python.org/mm3/mailman3/lists/pot.python.org/">mailing
list</a></p></li>
</ul>
<p>You can also post bug reports and feature requests in Github issues.
Make sure to read our <a class="reference external" href=".github/CONTRIBUTING.md">guidelines</a> first.</p>
</section>
<section id="references">
<h3>References<a class="headerlink" href="#references" title="Permalink to this headline"></a></h3>
<p>[1] Bonneel, N., Van De Panne, M., Paris, S., & Heidrich, W. (2011,
December). <a class="reference external" href="https://people.csail.mit.edu/sparis/publi/2011/sigasia/Bonneel_11_Displacement_Interpolation.pdf">Displacement interpolation using Lagrangian mass
transport</a>.
In ACM Transactions on Graphics (TOG) (Vol. 30, No. 6, p. 158). ACM.</p>
<p>[2] Cuturi, M. (2013). <a class="reference external" href="https://arxiv.org/pdf/1306.0895.pdf">Sinkhorn distances: Lightspeed computation of
optimal transport</a>. In Advances
in Neural Information Processing Systems (pp. 2292-2300).</p>
<p>[3] Benamou, J. D., Carlier, G., Cuturi, M., Nenna, L., & Peyré, G.
(2015). <a class="reference external" href="https://arxiv.org/pdf/1412.5154.pdf">Iterative Bregman projections for regularized transportation
problems</a>. SIAM Journal on
Scientific Computing, 37(2), A1111-A1138.</p>
<p>[4] S. Nakhostin, N. Courty, R. Flamary, D. Tuia, T. Corpetti,
<a class="reference external" href="https://hal.archives-ouvertes.fr/hal-01377236/document">Supervised planetary unmixing with optimal
transport</a>,
Whorkshop on Hyperspectral Image and Signal Processing : Evolution in
Remote Sensing (WHISPERS), 2016.</p>
<p>[5] N. Courty; R. Flamary; D. Tuia; A. Rakotomamonjy, <a class="reference external" href="https://arxiv.org/pdf/1507.00504.pdf">Optimal Transport
for Domain Adaptation</a>, in IEEE
Transactions on Pattern Analysis and Machine Intelligence , vol.PP,
no.99, pp.1-1</p>
<p>[6] Ferradans, S., Papadakis, N., Peyré, G., & Aujol, J. F. (2014).
<a class="reference external" href="https://arxiv.org/pdf/1307.5551.pdf">Regularized discrete optimal
transport</a>. SIAM Journal on
Imaging Sciences, 7(3), 1853-1882.</p>
<p>[7] Rakotomamonjy, A., Flamary, R., & Courty, N. (2015). <a class="reference external" href="https://arxiv.org/pdf/1510.06567.pdf">Generalized
conditional gradient: analysis of convergence and
applications</a>. arXiv preprint
arXiv:1510.06567.</p>
<p>[8] M. Perrot, N. Courty, R. Flamary, A. Habrard (2016), <a class="reference external" href="http://remi.flamary.com/biblio/perrot2016mapping.pdf">Mapping
estimation for discrete optimal
transport</a>,
Neural Information Processing Systems (NIPS).</p>
<p>[9] Schmitzer, B. (2016). <a class="reference external" href="https://arxiv.org/pdf/1610.06519.pdf">Stabilized Sparse Scaling Algorithms for
Entropy Regularized Transport
Problems</a>. arXiv preprint
arXiv:1610.06519.</p>
<p>[10] Chizat, L., Peyré, G., Schmitzer, B., & Vialard, F. X. (2016).
<a class="reference external" href="https://arxiv.org/pdf/1607.05816.pdf">Scaling algorithms for unbalanced transport
problems</a>. arXiv preprint
arXiv:1607.05816.</p>
<p>[11] Flamary, R., Cuturi, M., Courty, N., & Rakotomamonjy, A. (2016).
<a class="reference external" href="https://arxiv.org/pdf/1608.08063.pdf">Wasserstein Discriminant
Analysis</a>. arXiv preprint
arXiv:1608.08063.</p>
<p>[12] Gabriel Peyré, Marco Cuturi, and Justin Solomon (2016),
<a class="reference external" href="http://proceedings.mlr.press/v48/peyre16.html">Gromov-Wasserstein averaging of kernel and distance
matrices</a>
International Conference on Machine Learning (ICML).</p>
<p>[13] Mémoli, Facundo (2011). <a class="reference external" href="https://media.adelaide.edu.au/acvt/Publications/2011/2011-Gromov%E2%80%93Wasserstein%20Distances%20and%20the%20Metric%20Approach%20to%20Object%20Matching.pdf">Gromov–Wasserstein distances and the
metric approach to object
matching</a>.
Foundations of computational mathematics 11.4 : 417-487.</p>
<p>[14] Knott, M. and Smith, C. S. (1984).`On the optimal mapping of
distributions <<a class="reference external" href="https://link.springer.com/article/10.1007/BF00934745">https://link.springer.com/article/10.1007/BF00934745</a>>`__,
Journal of Optimization Theory and Applications Vol 43.</p>
<p>[15] Peyré, G., & Cuturi, M. (2018). <a class="reference external" href="https://arxiv.org/pdf/1803.00567.pdf">Computational Optimal
Transport</a> .</p>
<p>[16] Agueh, M., & Carlier, G. (2011). <a class="reference external" href="https://hal.archives-ouvertes.fr/hal-00637399/document">Barycenters in the Wasserstein
space</a>. SIAM
Journal on Mathematical Analysis, 43(2), 904-924.</p>
<p>[17] Blondel, M., Seguy, V., & Rolet, A. (2018). <a class="reference external" href="https://arxiv.org/abs/1710.06276">Smooth and Sparse
Optimal Transport</a>. Proceedings of
the Twenty-First International Conference on Artificial Intelligence and
Statistics (AISTATS).</p>
<p>[18] Genevay, A., Cuturi, M., Peyré, G. & Bach, F. (2016) <a class="reference external" href="https://arxiv.org/abs/1605.08527">Stochastic
Optimization for Large-scale Optimal
Transport</a>. Advances in Neural
Information Processing Systems (2016).</p>
<p>[19] Seguy, V., Bhushan Damodaran, B., Flamary, R., Courty, N., Rolet,
A.& Blondel, M. <a class="reference external" href="https://arxiv.org/pdf/1711.02283.pdf">Large-scale Optimal Transport and Mapping
Estimation</a>. International
Conference on Learning Representation (2018)</p>
<p>[20] Cuturi, M. and Doucet, A. (2014) <a class="reference external" href="http://proceedings.mlr.press/v32/cuturi14.html">Fast Computation of Wasserstein
Barycenters</a>.
International Conference in Machine Learning</p>
<p>[21] Solomon, J., De Goes, F., Peyré, G., Cuturi, M., Butscher, A.,
Nguyen, A. & Guibas, L. (2015). <a class="reference external" href="https://dl.acm.org/citation.cfm?id=2766963">Convolutional wasserstein distances:
Efficient optimal transportation on geometric
domains</a>. ACM
Transactions on Graphics (TOG), 34(4), 66.</p>
<p>[22] J. Altschuler, J.Weed, P. Rigollet, (2017) <a class="reference external" href="https://papers.nips.cc/paper/6792-near-linear-time-approximation-algorithms-for-optimal-transport-via-sinkhorn-iteration.pdf">Near-linear time
approximation algorithms for optimal transport via Sinkhorn
iteration</a>,
Advances in Neural Information Processing Systems (NIPS) 31</p>
<p>[23] Aude, G., Peyré, G., Cuturi, M., <a class="reference external" href="https://arxiv.org/abs/1706.00292">Learning Generative Models with
Sinkhorn Divergences</a>, Proceedings
of the Twenty-First International Conference on Artficial Intelligence
and Statistics, (AISTATS) 21, 2018</p>
<p>[24] Vayer, T., Chapel, L., Flamary, R., Tavenard, R. and Courty, N.
(2019). <a class="reference external" href="http://proceedings.mlr.press/v97/titouan19a.html">Optimal Transport for structured data with application on
graphs</a> Proceedings
of the 36th International Conference on Machine Learning (ICML).</p>
<p>[25] Frogner C., Zhang C., Mobahi H., Araya-Polo M., Poggio T. (2015).
<a class="reference external" href="http://cbcl.mit.edu/wasserstein/">Learning with a Wasserstein Loss</a>
Advances in Neural Information Processing Systems (NIPS).</p>
<p>[26] Alaya M. Z., Bérar M., Gasso G., Rakotomamonjy A. (2019).
<a class="reference external" href="https://papers.nips.cc/paper/9386-screening-sinkhorn-algorithm-for-regularized-optimal-transport">Screening Sinkhorn Algorithm for Regularized Optimal
Transport</a>,
Advances in Neural Information Processing Systems 33 (NeurIPS).</p>
<p>[27] Redko I., Courty N., Flamary R., Tuia D. (2019). <a class="reference external" href="http://proceedings.mlr.press/v89/redko19a.html">Optimal Transport
for Multi-source Domain Adaptation under Target
Shift</a>, Proceedings
of the Twenty-Second International Conference on Artificial Intelligence
and Statistics (AISTATS) 22, 2019.</p>
<p>[28] Caffarelli, L. A., McCann, R. J. (2010). <a class="reference external" href="http://www.math.toronto.edu/~mccann/papers/annals2010.pdf">Free boundaries in
optimal transport and Monge-Ampere obstacle
problems</a>,
Annals of mathematics, 673-730.</p>
<p>[29] Chapel, L., Alaya, M., Gasso, G. (2020). <a class="reference external" href="https://arxiv.org/abs/2002.08276">Partial Optimal Transport
with Applications on Positive-Unlabeled
Learning</a>, Advances in Neural
Information Processing Systems (NeurIPS), 2020.</p>
<p>[30] Flamary R., Courty N., Tuia D., Rakotomamonjy A. (2014). <a class="reference external" href="https://remi.flamary.com/biblio/flamary2014optlaplace.pdf">Optimal
transport with Laplacian regularization: Applications to domain
adaptation and shape
matching</a>,
NIPS Workshop on Optimal Transport and Machine Learning OTML, 2014.</p>
<p>[31] Bonneel, Nicolas, et al. <a class="reference external" href="https://perso.liris.cnrs.fr/nicolas.bonneel/WassersteinSliced-JMIV.pdf">Sliced and radon wasserstein barycenters
of
measures</a>,
Journal of Mathematical Imaging and Vision 51.1 (2015): 22-45</p>
<p>[32] Huang, M., Ma S., Lai, L. (2021). <a class="reference external" href="http://proceedings.mlr.press/v139/huang21e.html">A Riemannian Block Coordinate
Descent Method for Computing the Projection Robust Wasserstein
Distance</a>,
Proceedings of the 38th International Conference on Machine Learning
(ICML).</p>
<p>[33] Kerdoncuff T., Emonet R., Marc S. <a class="reference external" href="https://hal.archives-ouvertes.fr/hal-03232509/document">Sampled Gromov
Wasserstein</a>,
Machine Learning Journal (MJL), 2021</p>
<p>[34] Feydy, J., Séjourné, T., Vialard, F. X., Amari, S. I., Trouvé, A.,
& Peyré, G. (2019, April). <a class="reference external" href="http://proceedings.mlr.press/v89/feydy19a/feydy19a.pdf">Interpolating between optimal transport and
MMD using Sinkhorn
divergences</a>.
In The 22nd International Conference on Artificial Intelligence and
Statistics (pp. 2681-2690). PMLR.</p>
<p>[35] Deshpande, I., Hu, Y. T., Sun, R., Pyrros, A., Siddiqui, N.,
Koyejo, S., … & Schwing, A. G. (2019). <a class="reference external" href="https://openaccess.thecvf.com/content_CVPR_2019/papers/Deshpande_Max-Sliced_Wasserstein_Distance_and_Its_Use_for_GANs_CVPR_2019_paper.pdf">Max-sliced wasserstein
distance and its use for
gans</a>.
In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern
Recognition (pp. 10648-10656).</p>
<p>[36] Liutkus, A., Simsekli, U., Majewski, S., Durmus, A., & Stöter, F.
R. (2019, May). <a class="reference external" href="http://proceedings.mlr.press/v97/liutkus19a/liutkus19a.pdf">Sliced-Wasserstein flows: Nonparametric generative
modeling via optimal transport and
diffusions</a>.
In International Conference on Machine Learning (pp. 4104-4113). PMLR.</p>
<p>[37] Janati, H., Cuturi, M., Gramfort, A. <a class="reference external" href="http://proceedings.mlr.press/v119/janati20a/janati20a.pdf">Debiased sinkhorn
barycenters</a>
Proceedings of the 37th International Conference on Machine Learning,
PMLR 119:4692-4701, 2020</p>
<p>[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty,
<a class="reference external" href="https://arxiv.org/pdf/2102.06555.pdf">Online Graph Dictionary
Learning</a>, International
Conference on Machine Learning (ICML), 2021.</p>
</section>
</section>
</section>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>© Copyright 2016-2021, Rémi Flamary, Nicolas Courty.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions shift-up" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Python Optimal Transport</span>
versions
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions"><!-- Inserted RTD Footer -->
<div class="injected">
<dl>
<dt>Versions</dt>
<dd><a href="https://pythonot.github.io/master">latest</a></dd>
<dd><a href="https://pythonot.github.io/">stable</a></dd>
</dl>
<dl>
<dt>On GitHub</dt>
<dd>
<a href="https://github.com/PythonOT/POT">Code on Github</a>
</dd>
</dl>
<hr>
</div>
</div>
</div><script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>