Skip to content

Commit d03ff06

Browse files
committed
fix conflict
2 parents c2c0e96 + 1071759 commit d03ff06

File tree

5 files changed

+340
-434
lines changed

5 files changed

+340
-434
lines changed

RELEASES.md

Lines changed: 14 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -35,143 +35,13 @@ Many other bugs and issues have been fixed and we want to thank all the contribu
3535

3636

3737
#### New features
38-
- Gaussian Gromov Wasserstein loss and mapping (PR #498)
39-
- Template-based Fused Gromov Wasserstein GNN layer in `ot.gnn` (PR #488)
40-
- Make alpha parameter in semi-relaxed Fused Gromov Wasserstein differentiable (PR #483)
41-
- Make alpha parameter in Fused Gromov Wasserstein differentiable (PR #463)
42-
- Added the sparsity-constrained OT solver to `ot.smooth` and added `projection_sparse_simplex` to `ot.utils` (PR #459)
43-
- Add tests on GPU for master branch and approved PR (PR #473)
44-
- Add `median` method to all inherited classes of `backend.Backend` (PR #472)
45-
- Update tests for macOS and Windows, speedup documentation (PR #484)
46-
- Added Proximal Point algorithm to solve GW problems via a new parameter `solver="PPA"` in `ot.gromov.entropic_gromov_wasserstein` + examples (PR #455)
47-
- Added features `warmstart` and `kwargs` in `ot.gromov.entropic_gromov_wasserstein` to respectively perform warmstart on dual potentials and pass parameters to `ot.sinkhorn` (PR #455)
48-
- Added sinkhorn projection based solvers for FGW `ot.gromov.entropic_fused_gromov_wasserstein` and entropic FGW barycenters + examples (PR #455)
49-
- Added features `warmstartT` and `kwargs` to all CG and entropic (F)GW barycenter solvers (PR #455)
50-
- Added entropic semi-relaxed (Fused) Gromov-Wasserstein solvers in `ot.gromov` + examples (PR #455)
51-
- Make marginal parameters optional for (F)GW solvers in `._gw`, `._bregman` and `._semirelaxed` (PR #455)
52-
- Add Entropic Wasserstein Component Analysis (ECWA) in ot.dr (PR #486)
53-
- Added feature Efficient Discrete Multi Marginal Optimal Transport Regularization + examples (PR #454)
5438

55-
#### Closed issues
56-
57-
- Fix gromov conventions (PR #497)
58-
- Fix change in scipy API for `cdist` (PR #487)
59-
- More permissive check_backend (PR #494)
60-
- Fix circleci-redirector action and codecov (PR #460)
61-
- Fix issues with cuda for ot.binary_search_circle and with gradients for ot.sliced_wasserstein_sphere (PR #457)
62-
- Major documentation cleanup (PR #462, PR #467, PR #475)
63-
- Fix gradients for "Wasserstein2 Minibatch GAN" example (PR #466)
64-
- Faster Bures-Wasserstein distance with NumPy backend (PR #468)
65-
- Fix issue backend for ot.sliced_wasserstein_sphere ot.sliced_wasserstein_sphere_unif (PR #471)
66-
- Fix issue with ot.barycenter_stabilized when used with PyTorch tensors and log=True (PR #474)
67-
- Fix `utils.cost_normalization` function issue to work with multiple backends (PR #472)
68-
- Fix pression error on marginal sums and (Issue #429, PR #496)
69-
70-
#### New Contributors
71-
* @kachayev made their first contribution in PR #462
72-
* @liutianlin0121 made their first contribution in PR #459
73-
* @francois-rozet made their first contribution in PR #468
74-
* @framunoz made their first contribution in PR #472
75-
* @SoniaMaz8 made their first contribution in PR #483
76-
* @tomMoral made their first contribution in PR #494
77-
* @12hengyu made their first contribution in PR #454
78-
79-
## 0.9.0
80-
*April 2023*
81-
82-
This new release contains so many new features and bug fixes since 0.8.2 that we
83-
decided to make it a new minor release at 0.9.0.
84-
85-
The release contains many new features. First we did a major
86-
update of all Gromov-Wasserstein solvers that brings up to 30% gain in
87-
computation time (see PR #431) and allows the GW solvers to work on non symmetric
88-
matrices. It also brings novel solvers for the very
89-
efficient [semi-relaxed GW problem
90-
](https://pythonot.github.io/master/auto_examples/gromov/plot_semirelaxed_fgw.html#sphx-glr-auto-examples-gromov-plot-semirelaxed-fgw-py)
91-
that can be used to find the best re-weighting for one of the distributions. We
92-
also now have fast and differentiable solvers for [Wasserstein on the circle](https://pythonot.github.io/master/auto_examples/plot_compute_wasserstein_circle.html#sphx-glr-auto-examples-plot-compute-wasserstein-circle-py) and
93-
[sliced Wasserstein on the
94-
sphere](https://pythonot.github.io/master/auto_examples/backends/plot_ssw_unif_torch.html#sphx-glr-auto-examples-backends-plot-ssw-unif-torch-py).
95-
We are also very happy to provide new OT barycenter solvers such as the [Free
96-
support Sinkhorn
97-
barycenter](https://pythonot.github.io/master/auto_examples/barycenters/plot_free_support_sinkhorn_barycenter.html#sphx-glr-auto-examples-barycenters-plot-free-support-sinkhorn-barycenter-py)
98-
and the [Generalized Wasserstein
99-
barycenter](https://pythonot.github.io/master/auto_examples/barycenters/plot_generalized_free_support_barycenter.html#sphx-glr-auto-examples-barycenters-plot-generalized-free-support-barycenter-py).
100-
A new differentiable solver for OT across spaces that provides OT plans
101-
between samples and features simultaneously and
102-
called [Co-Optimal
103-
Transport](https://pythonot.github.io/master/auto_examples/others/plot_COOT.html)
104-
has also been implemented. Finally we began working on OT between Gaussian distributions and
105-
now provide differentiable estimation for the Bures-Wasserstein [divergence](https://pythonot.github.io/master/gen_modules/ot.gaussian.html#ot.gaussian.bures_wasserstein_distance) and
106-
[mappings](https://pythonot.github.io/master/auto_examples/domain-adaptation/plot_otda_linear_mapping.html#sphx-glr-auto-examples-domain-adaptation-plot-otda-linear-mapping-py).
107-
108-
Another important first step toward POT 1.0 is the
109-
implementation of a unified API for OT solvers with introduction of [`ot.solve`](https://pythonot.github.io/master/all.html#ot.solve)
110-
function that can solve (depending on parameters) exact, regularized and
111-
unbalanced OT and return a new
112-
[`OTResult`](https://pythonot.github.io/master/gen_modules/ot.utils.html#ot.utils.OTResult)
113-
object. The idea behind this new API is to facilitate exploring different solvers
114-
with just a change of parameter and get a more unified API for them. We will keep
115-
the old solvers API for power users but it will be the preferred way to solve
116-
problems starting from release 1.0.0.
117-
We provide below some examples of use for the new function and how to
118-
recover different aspects of the solution (OT plan, full loss, linear part of the
119-
loss, dual variables) :
120-
```python
121-
#Solve exact ot
122-
sol = ot.solve(M)
123-
124-
# get the results
125-
G = sol.plan # OT plan
126-
ot_loss = sol.value # OT value (full loss for regularized and unbalanced)
127-
ot_loss_linear = sol.value_linear # OT value for linear term np.sum(sol.plan*M)
128-
alpha, beta = sol.potentials # dual potentials
129-
130-
# direct plan and loss computation
131-
G = ot.solve(M).plan
132-
ot_loss = ot.solve(M).value
133-
134-
# OT exact with marginals a/b
135-
sol2 = ot.solve(M, a, b)
136-
137-
# regularized and unbalanced OT
138-
sol_rkl = ot.solve(M, a, b, reg=1) # KL regularization
139-
sol_rl2 = ot.solve(M, a, b, reg=1, reg_type='L2')
140-
sol_ul2 = ot.solve(M, a, b, unbalanced=10, unbalanced_type='L2')
141-
sol_rkl_ukl = ot.solve(M, a, b, reg=10, unbalanced=10) # KL + KL
142-
143-
```
144-
The function is fully compatible with backends and will be implemented for
145-
different types of distribution support (empirical distributions, grids) and OT
146-
problems (Gromov-Wasserstein) in the new releases. This new API is not yet
147-
presented in the kickstart part of the documentation as there is a small change
148-
that it might change
149-
when implementing new solvers but we encourage users to play with it.
150-
151-
Finally, in addition to those many new this release fixes 20 issues (some long
152-
standing) and we want to thank all the contributors who made this release so
153-
big. More details below.
154-
155-
156-
#### New features
157-
- Added feature to (Fused) Gromov-Wasserstein solvers inherited from `ot.optim` to support relative and absolute loss variations as stopping criterions (PR #431)
158-
- Added feature to (Fused) Gromov-Wasserstein solvers to handle asymmetric matrices (PR #431)
159-
- Added semi-relaxed (Fused) Gromov-Wasserstein solvers in `ot.gromov` + examples (PR #431)
160-
- Added the spherical sliced-Wasserstein discrepancy in `ot.sliced.sliced_wasserstein_sphere` and `ot.sliced.sliced_wasserstein_sphere_unif` + examples (PR #434)
161-
- Added the Wasserstein distance on the circle in ``ot.lp.solver_1d.wasserstein_circle`` (PR #434)
162-
- Added the Wasserstein distance on the circle (for p>=1) in `ot.lp.solver_1d.binary_search_circle` + examples (PR #434)
163-
- Added the 2-Wasserstein distance on the circle w.r.t a uniform distribution in `ot.lp.solver_1d.semidiscrete_wasserstein2_unif_circle` (PR #434)
16439
- Added Bures Wasserstein distance in `ot.gaussian` (PR ##428)
16540
- Added Generalized Wasserstein Barycenter solver + example (PR #372), fixed graphical details on the example (PR #376)
16641
- Added Free Support Sinkhorn Barycenter + example (PR #387)
16742
- New API for OT solver using function `ot.solve` (PR #388)
168-
- Backend version of `ot.partial` and `ot.smooth` (PR #388 and #449)
169-
- Added argument for warmstart of dual potentials in Sinkhorn-based methods in `ot.bregman` (PR #437)
170-
- Added parameters method in `ot.da.SinkhornTransport` (PR #440)
171-
- `ot.dr` now uses the new Pymanopt API and POT is compatible with current
172-
Pymanopt (PR #443)
173-
- Added CO-Optimal Transport solver + examples (PR #447)
174-
- Remove the redundant `nx.abs()` at the end of `wasserstein_1d()` (PR #448)
43+
- Backend version of `ot.partial` and `ot.smooth` (PR #388)
44+
- Added argument for warmstart of dual vectors in Sinkhorn-based methods in `ot.bregman` (PR #437)
17545

17646
#### Closed issues
17747

@@ -199,11 +69,9 @@ PR #413)
19969
- Fix an issue where the parameter `stopThr` in `empirical_sinkhorn_divergence` was rendered useless by subcalls
20070
that explicitly specified `stopThr=1e-9` (Issue #421, PR #422).
20171
- Fixed a bug breaking an example where we would try to make an array of arrays of different shapes (Issue #424, PR #425)
202-
- Fixed an issue with the documentation gallery section (PR #444)
203-
- Fixed issues with cuda variables for `line_search_armijo` and `entropic_gromov_wasserstein` (Issue #445, #PR 446)
72+
20473

20574
## 0.8.2
206-
*April 2022*
20775

20876
This releases introduces several new notable features. The less important
20977
but most exiting one being that we now have a logo for the toolbox (color
@@ -347,7 +215,7 @@ a [Generative Network
347215
(GAN)](https://PythonOT.github.io/auto_examples/backends/plot_wass2_gan_torch.html),
348216
for a [sliced Wasserstein gradient
349217
flow](https://PythonOT.github.io/auto_examples/backends/plot_sliced_wass_grad_flow_pytorch.html)
350-
and [optimizing the Gromov-Wasserstein 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
218+
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
351219
slow at the moment, we strongly recommend for Jax users to use the [OTT
352220
toolbox](https://github.com/google-research/ott) when possible.
353221
As a result of this new feature,
@@ -359,7 +227,7 @@ Pointwise Gromov
359227
Wasserstein](https://PythonOT.github.io/auto_examples/gromov/plot_gromov.html#compute-gw-with-a-scalable-stochastic-method-with-any-loss-function),
360228
Sinkhorn in log space with `method='sinkhorn_log'`, [Projection Robust
361229
Wasserstein](https://PythonOT.github.io/gen_modules/ot.dr.html?highlight=robust#ot.dr.projection_robust_wasserstein),
362-
ans [debiased Sinkhorn barycenters](https://PythonOT.github.ioauto_examples/barycenters/plot_debiased_barycenter.html).
230+
ans [deviased Sinkorn barycenters](https://PythonOT.github.ioauto_examples/barycenters/plot_debiased_barycenter.html).
363231

364232
This release will also simplify the installation process. We have now a
365233
`pyproject.toml` that defines the build dependency and POT should now build even
@@ -500,15 +368,15 @@ are coming for the next versions.
500368

501369
#### Closed issues
502370

503-
- Add JMLR paper to the readme and Mathieu Blondel to the Acknowledgments (PR
371+
- Add JMLR paper to the readme and Mathieu Blondel to the Acknoledgments (PR
504372
#231, #232)
505373
- Bug in Unbalanced OT example (Issue #127)
506374
- Clean Cython output when calling setup.py clean (Issue #122)
507375
- Various Macosx compilation problems (Issue #113, Issue #118, PR#130)
508376
- EMD dimension mismatch (Issue #114, Fixed in PR #116)
509377
- 2D barycenter bug for non square images (Issue #124, fixed in PR #132)
510378
- Bad value in EMD 1D (Issue #138, fixed in PR #139)
511-
- Log bugs for Gromov-Wasserstein solver (Issue #107, fixed in PR #108)
379+
- Log bugs for Gromov-Wassertein solver (Issue #107, fixed in PR #108)
512380
- Weight issues in barycenter function (PR #106)
513381

514382
## 0.6.0
@@ -539,9 +407,9 @@ a solver for [Unbalanced OT
539407
barycenters](https://github.com/rflamary/POT/blob/master/notebooks/plot_UOT_barycenter_1D.ipynb).
540408
A new variant of Gromov-Wasserstein divergence called [Fused
541409
Gromov-Wasserstein](https://pot.readthedocs.io/en/latest/all.html?highlight=fused_#ot.gromov.fused_gromov_wasserstein)
542-
has been also contributed with examples of use on [structured
410+
has been also contributed with exemples of use on [structured
543411
data](https://github.com/rflamary/POT/blob/master/notebooks/plot_fgw.ipynb) and
544-
computing [barycenters of labeled
412+
computing [barycenters of labeld
545413
graphs](https://github.com/rflamary/POT/blob/master/notebooks/plot_barycenter_fgw.ipynb).
546414

547415

@@ -602,7 +470,7 @@ and [free support](https://github.com/rflamary/POT/blob/master/notebooks/plot_fr
602470
implementation of entropic OT.
603471

604472
POT 0.5 also comes with a rewriting of ot.gpu using the cupy framework instead of
605-
the unmaintained cudamat. Note that while we tried to keep changes to the
473+
the unmaintained cudamat. Note that while we tried to keed changes to the
606474
minimum, the OTDA classes were deprecated. If you are happy with the cudamat
607475
implementation, we recommend you stay with stable release 0.4 for now.
608476

@@ -626,7 +494,7 @@ and new POT contributors (you can see the list in the [readme](https://github.co
626494
* Stochastic OT in the dual and semi-dual (PR #52 and PR #62)
627495
* Free support barycenters (PR #56)
628496
* Speed-up Sinkhorn function (PR #57 and PR #58)
629-
* Add convolutional Wasserstein barycenters for 2D images (PR #64)
497+
* Add convolutional Wassersein barycenters for 2D images (PR #64)
630498
* Add Greedy Sinkhorn variant (Greenkhorn) (PR #66)
631499
* Big ot.gpu update with cupy implementation (instead of un-maintained cudamat) (PR #67)
632500

@@ -677,15 +545,15 @@ This release contains a lot of contribution from new contributors.
677545
* new notebooks for emd computation and Wasserstein Discriminant Analysis
678546
* relocate notebooks
679547
* update documentation
680-
* clean_zeros(a,b,M) for removing zeros in sparse distributions
548+
* clean_zeros(a,b,M) for removimg zeros in sparse distributions
681549
* GPU implementations for sinkhorn and group lasso regularization
682550

683551

684552
## V0.2
685553
*7 Apr 2017*
686554

687555
* New dimensionality reduction method (WDA)
688-
* Efficient method emd2 returns only transport (in parallel if several histograms given)
556+
* Efficient method emd2 returns only tarnsport (in paralell if several histograms given)
689557

690558

691559

@@ -726,4 +594,4 @@ It provides the following solvers:
726594
* Optimal transport for domain adaptation with group lasso regularization
727595
* Conditional gradient and Generalized conditional gradient for regularized OT.
728596

729-
Some demonstrations (both in Python and Jupyter Notebook format) are available in the examples folder.
597+
Some demonstrations (both in Python and Jupyter Notebook format) are available in the examples folder.

0 commit comments

Comments
 (0)