Skip to content

Commit a313e21

Browse files
6Ulmrflamary
andauthored
[MRG] Added argument for warmstart of dual vectors in Sinkhorn-based methods in ot.bregman (#437)
* Allow warmstart in sinkhorn and sinkhorn_log * Added argument for warmstart of dual vectors in Sinkhorn-based methods in * Add the number of the PR * [WIP] CO-Optimal Transport * Revert "[WIP] CO-Optimal Transport" This reverts commit f3d36b2. * reformat with PEP8 * Fix W291 trailing whitespace error in pep8 test * Rearange position of warmstart argument and edit its description --------- Co-authored-by: Rémi Flamary <[email protected]>
1 parent 80e3c23 commit a313e21

File tree

3 files changed

+372
-175
lines changed

3 files changed

+372
-175
lines changed

RELEASES.md

+44-44
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
- Added Generalized Wasserstein Barycenter solver + example (PR #372), fixed graphical details on the example (PR #376)
1313
- Added Free Support Sinkhorn Barycenter + example (PR #387)
1414
- New API for OT solver using function `ot.solve` (PR #388)
15-
- Backend version of `ot.partial` and `ot.smooth` (PR #388)
16-
15+
- Backend version of `ot.partial` and `ot.smooth` (PR #388)
16+
- Added argument for warmstart of dual potentials in Sinkhorn-based methods in `ot.bregman` (PR #437)
1717

1818
#### Closed issues
1919

@@ -35,10 +35,10 @@ roughly 2^31) (PR #381)
3535
- Fixed an issue where the doc could not be built due to some changes in matplotlib's API (Issue #403, PR #402)
3636
- Replaced Numpy C Compiler with Setuptools C Compiler due to deprecation issues (Issue #408, PR #409)
3737
- Fixed weak optimal transport docstring (Issue #404, PR #410)
38-
- Fixed error with parameter `log=True`for `SinkhornLpl1Transport` (Issue #412,
38+
- Fixed error with parameter `log=True`for `SinkhornLpl1Transport` (Issue #412,
3939
PR #413)
4040
- Fixed an issue about `warn` parameter in `sinkhorn2` (PR #417)
41-
- Fix an issue where the parameter `stopThr` in `empirical_sinkhorn_divergence` was rendered useless by subcalls
41+
- Fix an issue where the parameter `stopThr` in `empirical_sinkhorn_divergence` was rendered useless by subcalls
4242
that explicitly specified `stopThr=1e-9` (Issue #421, PR #422).
4343
- Fixed a bug breaking an example where we would try to make an array of arrays of different shapes (Issue #424, PR #425)
4444

@@ -88,7 +88,7 @@ and [Factored coupling OT](https://pythonot.github.io/auto_examples/others/plot_
8888

8989
- Remove deprecated `ot.gpu` submodule (PR #361)
9090
- Update examples in the gallery (PR #359)
91-
- Add stochastic loss and OT plan computation for regularized OT and
91+
- Add stochastic loss and OT plan computation for regularized OT and
9292
backend examples(PR #360)
9393
- Implementation of factored OT with emd and sinkhorn (PR #358)
9494
- A brand new logo for POT (PR #357)
@@ -104,9 +104,9 @@ and [Factored coupling OT](https://pythonot.github.io/auto_examples/others/plot_
104104

105105
#### Closed issues
106106

107-
- Fix mass gradient of `ot.emd2` and `ot.gromov_wasserstein2` so that they are
107+
- Fix mass gradient of `ot.emd2` and `ot.gromov_wasserstein2` so that they are
108108
centered (Issue #364, PR #363)
109-
- Fix bug in instantiating an `autograd` function `ValFunction` (Issue #337,
109+
- Fix bug in instantiating an `autograd` function `ValFunction` (Issue #337,
110110
PR #338)
111111
- Fix POT ABI compatibility with old and new numpy (Issue #346, PR #349)
112112
- Warning when feeding integer cost matrix to EMD solver resulting in an integer transport plan (Issue #345, PR #343)
@@ -156,21 +156,21 @@ As always we want to that the contributors who helped make POT better (and bug f
156156

157157
- Fix bug in older Numpy ABI (<1.20) (Issue #308, PR #326)
158158
- Fix bug in `ot.dist` function when non euclidean distance (Issue #305, PR #306)
159-
- Fix gradient scaling for functions using `nx.set_gradients` (Issue #309,
159+
- Fix gradient scaling for functions using `nx.set_gradients` (Issue #309,
160160
PR #310)
161-
- Fix bug in generalized Conditional gradient solver and SinkhornL1L2
161+
- Fix bug in generalized Conditional gradient solver and SinkhornL1L2
162162
(Issue #311, PR #313)
163163
- Fix log error in `gromov_barycenters` (Issue #317, PR #3018)
164164

165165
## 0.8.0
166166
*November 2021*
167167

168-
This new stable release introduces several important features.
168+
This new stable release introduces several important features.
169169

170170
First we now have
171171
an OpenMP compatible exact ot solver in `ot.emd`. The OpenMP version is used
172172
when the parameter `numThreads` is greater than one and can lead to nice
173-
speedups on multi-core machines.
173+
speedups on multi-core machines.
174174

175175
Second we have introduced a backend mechanism that allows to use standard POT
176176
function seamlessly on Numpy, Pytorch and Jax arrays. Other backends are coming
@@ -189,7 +189,7 @@ for a [sliced Wasserstein gradient
189189
flow](https://PythonOT.github.io/auto_examples/backends/plot_sliced_wass_grad_flow_pytorch.html)
190190
and [optimizing the Gromov-Wassersein distance](https://PythonOT.github.io/auto_examples/backends/plot_optim_gromov_pytorch.html). Note that the Jax backend is still in early development and quite
191191
slow at the moment, we strongly recommend for Jax users to use the [OTT
192-
toolbox](https://github.com/google-research/ott) when possible.
192+
toolbox](https://github.com/google-research/ott) when possible.
193193
As a result of this new feature,
194194
the old `ot.gpu` submodule is now deprecated since GPU
195195
implementations can be done using GPU arrays on the torch backends.
@@ -212,7 +212,7 @@ Finally POT was accepted for publication in the Journal of Machine Learning
212212
Research (JMLR) open source software track and we ask the POT users to cite [this
213213
paper](https://www.jmlr.org/papers/v22/20-451.html) from now on. The documentation has been improved in particular by adding a
214214
"Why OT?" section to the quick start guide and several new examples illustrating
215-
the new features. The documentation now has two version : the stable version
215+
the new features. The documentation now has two version : the stable version
216216
[https://pythonot.github.io/](https://pythonot.github.io/)
217217
corresponding to the last release and the master version [https://pythonot.github.io/master](https://pythonot.github.io/master) that corresponds to the
218218
current master branch on GitHub.
@@ -222,7 +222,7 @@ As usual, we want to thank all the POT contributors (now 37 people have
222222
contributed to the toolbox). But for this release we thank in particular Nathan
223223
Cassereau and Kamel Guerda from the AI support team at
224224
[IDRIS](http://www.idris.fr/) for their support to the development of the
225-
backend and OpenMP implementations.
225+
backend and OpenMP implementations.
226226

227227

228228
#### New features
@@ -289,7 +289,7 @@ repository for the new documentation is now hosted at
289289

290290
This is the first release where the Python 2.7 tests have been removed. Most of
291291
the toolbox should still work but we do not offer support for Python 2.7 and
292-
will close related Issues.
292+
will close related Issues.
293293

294294
A lot of changes have been done to the documentation that is now hosted on
295295
[https://PythonOT.github.io/](https://PythonOT.github.io/) instead of
@@ -322,7 +322,7 @@ problems.
322322

323323
This release is also the moment to thank all the POT contributors (old and new)
324324
for helping making POT such a nice toolbox. A lot of changes (also in the API)
325-
are coming for the next versions.
325+
are coming for the next versions.
326326

327327

328328
#### Features
@@ -351,14 +351,14 @@ are coming for the next versions.
351351
- Log bugs for Gromov-Wassertein solver (Issue #107, fixed in PR #108)
352352
- Weight issues in barycenter function (PR #106)
353353

354-
## 0.6.0
354+
## 0.6.0
355355
*July 2019*
356356

357-
This is the first official stable release of POT and this means a jump to 0.6!
357+
This is the first official stable release of POT and this means a jump to 0.6!
358358
The library has been used in
359359
the wild for a while now and we have reached a state where a lot of fundamental
360360
OT solvers are available and tested. It has been quite stable in the last months
361-
but kept the beta flag in its Pypi classifiers until now.
361+
but kept the beta flag in its Pypi classifiers until now.
362362

363363
Note that this release will be the last one supporting officially Python 2.7 (See
364364
https://python3statement.org/ for more reasons). For next release we will keep
@@ -387,7 +387,7 @@ graphs](https://github.com/rflamary/POT/blob/master/notebooks/plot_barycenter_fg
387387

388388
A lot of work has been done on the documentation with several new
389389
examples corresponding to the new features and a lot of corrections for the
390-
docstrings. But the most visible change is a new
390+
docstrings. But the most visible change is a new
391391
[quick start guide](https://pot.readthedocs.io/en/latest/quickstart.html) for
392392
POT that gives several pointers about which function or classes allow to solve which
393393
specific OT problem. When possible a link is provided to relevant examples.
@@ -425,29 +425,29 @@ bring new features and solvers to the library.
425425
- Issue #72 Macosx build problem
426426

427427

428-
## 0.5.0
428+
## 0.5.0
429429
*Sep 2018*
430430

431-
POT is 2 years old! This release brings numerous new features to the
431+
POT is 2 years old! This release brings numerous new features to the
432432
toolbox as listed below but also several bug correction.
433433

434-
Among the new features, we can highlight a [non-regularized Gromov-Wasserstein
435-
solver](https://github.com/rflamary/POT/blob/master/notebooks/plot_gromov.ipynb),
436-
a new [greedy variant of sinkhorn](https://pot.readthedocs.io/en/latest/all.html#ot.bregman.greenkhorn),
437-
[non-regularized](https://pot.readthedocs.io/en/latest/all.html#ot.lp.barycenter),
434+
Among the new features, we can highlight a [non-regularized Gromov-Wasserstein
435+
solver](https://github.com/rflamary/POT/blob/master/notebooks/plot_gromov.ipynb),
436+
a new [greedy variant of sinkhorn](https://pot.readthedocs.io/en/latest/all.html#ot.bregman.greenkhorn),
437+
[non-regularized](https://pot.readthedocs.io/en/latest/all.html#ot.lp.barycenter),
438438
[convolutional (2D)](https://github.com/rflamary/POT/blob/master/notebooks/plot_convolutional_barycenter.ipynb)
439439
and [free support](https://github.com/rflamary/POT/blob/master/notebooks/plot_free_support_barycenter.ipynb)
440-
Wasserstein barycenters and [smooth](https://github.com/rflamary/POT/blob/prV0.5/notebooks/plot_OT_1D_smooth.ipynb)
441-
and [stochastic](https://pot.readthedocs.io/en/latest/all.html#ot.stochastic.sgd_entropic_regularization)
440+
Wasserstein barycenters and [smooth](https://github.com/rflamary/POT/blob/prV0.5/notebooks/plot_OT_1D_smooth.ipynb)
441+
and [stochastic](https://pot.readthedocs.io/en/latest/all.html#ot.stochastic.sgd_entropic_regularization)
442442
implementation of entropic OT.
443443

444-
POT 0.5 also comes with a rewriting of ot.gpu using the cupy framework instead of
445-
the unmaintained cudamat. Note that while we tried to keed changes to the
446-
minimum, the OTDA classes were deprecated. If you are happy with the cudamat
444+
POT 0.5 also comes with a rewriting of ot.gpu using the cupy framework instead of
445+
the unmaintained cudamat. Note that while we tried to keed changes to the
446+
minimum, the OTDA classes were deprecated. If you are happy with the cudamat
447447
implementation, we recommend you stay with stable release 0.4 for now.
448448

449-
The code quality has also improved with 92% code coverage in tests that is now
450-
printed to the log in the Travis builds. The documentation has also been
449+
The code quality has also improved with 92% code coverage in tests that is now
450+
printed to the log in the Travis builds. The documentation has also been
451451
greatly improved with new modules and examples/notebooks.
452452

453453
This new release is so full of new stuff and corrections thanks to the old
@@ -466,24 +466,24 @@ and new POT contributors (you can see the list in the [readme](https://github.co
466466
* Stochastic OT in the dual and semi-dual (PR #52 and PR #62)
467467
* Free support barycenters (PR #56)
468468
* Speed-up Sinkhorn function (PR #57 and PR #58)
469-
* Add convolutional Wassersein barycenters for 2D images (PR #64)
469+
* Add convolutional Wassersein barycenters for 2D images (PR #64)
470470
* Add Greedy Sinkhorn variant (Greenkhorn) (PR #66)
471471
* Big ot.gpu update with cupy implementation (instead of un-maintained cudamat) (PR #67)
472472

473473
#### Deprecation
474474

475-
Deprecated OTDA Classes were removed from ot.da and ot.gpu for version 0.5
476-
(PR #48 and PR #67). The deprecation message has been for a year here since
475+
Deprecated OTDA Classes were removed from ot.da and ot.gpu for version 0.5
476+
(PR #48 and PR #67). The deprecation message has been for a year here since
477477
0.4 and it is time to pull the plug.
478478

479479
#### Closed issues
480480

481481
* Issue #35 : remove import plot from ot/__init__.py (See PR #41)
482482
* Issue #43 : Unusable parameter log for EMDTransport (See PR #44)
483-
* Issue #55 : UnicodeDecodeError: 'ascii' while installing with pip
483+
* Issue #55 : UnicodeDecodeError: 'ascii' while installing with pip
484484

485485

486-
## 0.4
486+
## 0.4
487487
*15 Sep 2017*
488488

489489
This release contains a lot of contribution from new contributors.
@@ -493,22 +493,22 @@ This release contains a lot of contribution from new contributors.
493493

494494
* Automatic notebooks and doc update (PR #27)
495495
* Add gromov Wasserstein solver and Gromov Barycenters (PR #23)
496-
* emd and emd2 can now return dual variables and have max_iter (PR #29 and PR #25)
496+
* emd and emd2 can now return dual variables and have max_iter (PR #29 and PR #25)
497497
* New domain adaptation classes compatible with scikit-learn (PR #22)
498498
* Proper tests with pytest on travis (PR #19)
499499
* PEP 8 tests (PR #13)
500500

501501
#### Closed issues
502502

503-
* emd convergence problem du to fixed max iterations (#24)
503+
* emd convergence problem du to fixed max iterations (#24)
504504
* Semi supervised DA error (#26)
505505

506506
## 0.3.1
507507
*11 Jul 2017*
508508

509509
* Correct bug in emd on windows
510510

511-
## 0.3
511+
## 0.3
512512
*7 Jul 2017*
513513

514514
* emd* and sinkhorn* are now performed in parallel for multiple target distributions
@@ -521,23 +521,23 @@ This release contains a lot of contribution from new contributors.
521521
* GPU implementations for sinkhorn and group lasso regularization
522522

523523

524-
## V0.2
524+
## V0.2
525525
*7 Apr 2017*
526526

527527
* New dimensionality reduction method (WDA)
528528
* Efficient method emd2 returns only tarnsport (in paralell if several histograms given)
529529

530530

531531

532-
## 0.1.11
532+
## 0.1.11
533533
*5 Jan 2017*
534534

535535
* Add sphinx gallery for better documentation
536536
* Small efficiency tweak in sinkhorn
537537
* Add simple tic() toc() functions for timing
538538

539539

540-
## 0.1.10
540+
## 0.1.10
541541
*7 Nov 2016*
542542
* numerical stabilization for sinkhorn (log domain and epsilon scaling)
543543

0 commit comments

Comments
 (0)