Skip to content

Commit 5c28c18

Browse files
authored
[MRG] Release 0.9.2 (#585)
* first shot 0.9.2 release * update release file * update contributors
1 parent 9ddb690 commit 5c28c18

File tree

3 files changed

+63
-8
lines changed

3 files changed

+63
-8
lines changed

CONTRIBUTORS.md

+8-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
## Creators and Maintainers
44

5-
This toolbox has been created and is maintained by:
5+
This toolbox has been created by
66

7-
* [Rémi Flamary](http://remi.flamary.com/)
7+
* [Rémi Flamary](https://remi.flamary.com/)
88
* [Nicolas Courty](http://people.irisa.fr/Nicolas.Courty/)
99

10+
It is currently maintained by
11+
12+
* [Rémi Flamary](https://remi.flamary.com/)
13+
* [Cédric Vincent-Cuaz](https://cedricvincentcuaz.github.io/)
14+
1015
## Contributors
1116

1217
The contributors to this library are:
@@ -58,4 +63,4 @@ This toolbox benefit a lot from open source research and we would like to thank
5863

5964
POT has benefited from the financing or manpower from the following partners:
6065

61-
<img src="https://pythonot.github.io/master/_static/images/logo_anr.jpg" alt="ANR" style="height:60px;"/><img src="https://pythonot.github.io/master/_static/images/logo_cnrs.jpg" alt="CNRS" style="height:60px;"/><img src="https://pythonot.github.io/master/_static/images/logo_3ia.jpg" alt="3IA" style="height:60px;"/>
66+
<img src="https://pythonot.github.io/master/_static/images/logo_anr.jpg" alt="ANR" style="height:60px;"/><img src="https://pythonot.github.io/master/_static/images/logo_cnrs.jpg" alt="CNRS" style="height:60px;"/><img src="https://pythonot.github.io/master/_static/images/logo_3ia.jpg" alt="3IA" style="height:60px;"/><img src="https://pythonot.github.io/master/_static/images/logo_hiparis.png" alt="Hi!PARIS" style="height:60px;"/>

RELEASES.md

+54-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,60 @@
11
# Releases
22

3-
## Next Release
3+
## 0.9.2
4+
*December 2023*
45

5-
#### New features
6-
+ Domain adaptation method `SinkhornL1l2Transport` now supports JAX backend (PR #587)
6+
This new release contains several new features and bug fixes. Among the new features
7+
we have a new solver for estimation of nearest Brenier potentials (SSNB) that can be used for OT mapping estimation (on small problems), new Bregman Alternated Projected Gradient solvers for GW and FGW, and new solvers for Bures-Wasserstein barycenters. We also provide a first solver for Low Rank Sinkhorn that will be ussed to provide low rak OT extensions in the next releases. Finally we have a new exact line-search for (F)GW solvers with KL loss that can be used to improve the convergence of the solvers.
8+
9+
We also have a new `LazyTensor` class that can be used to model OT plans and low rank tensors in large scale OT. This class is used to return the plan for the new wrapper for `geomloss` Sinkhorn solver on empirical samples that can lead to x10/x100 speedups on CPU or GPU and have a lazy implementation that allows solving very large problems of a few millions samples.
10+
11+
We also have a new API for solving OT problems from empirical samples with `ot.solve_sample` Finally we have a new API for Gromov-Wasserstein solvers with `ot.solve_gromov` function that centralizes most of the (F)GW methods with unified notation. Some example of how to use the new API below:
12+
13+
```python
14+
# Generate random data
15+
xs, xt = np.random.randn(100, 2), np.random.randn(50, 2)
16+
17+
# Solve OT problem with empirical samples
18+
sol = ot.solve_sample(xs, xt) # Exact OT betwen smaples with uniform weights
19+
sol = ot.solve_sample(xs, xt, wa, wb) # Exact OT with weights given by user
20+
21+
sol = ot.solve_sample(xs, xt, reg= 1, metric='euclidean') # sinkhorn with euclidean metric
22+
23+
sol = ot.solve_sample(xs, xt, reg= 1, method='geomloss') # faster sinkhorn solver on CPU/GPU
24+
25+
sol = ot.solve_sample(x,x2, method='factored', rank=10) # compute factored OT
26+
27+
sol = ot.solve_sample(x,x2, method='lowrank', rank=10) # compute lowrank sinkhorn OT
28+
29+
value_bw = ot.solve_sample(xs, xt, method='gaussian').value # Bures-Wasserstein distance
30+
31+
# Solve GW problem
32+
Cs, Ct = ot.dist(xs, xs), ot.dist(xt, xt) # compute cost matrices
33+
sol = ot.solve_gromov(Cs,Ct) # Exact GW between samples with uniform weights
34+
35+
# Solve FGW problem
36+
M = ot.dist(xs, xt) # compute cost matrix
37+
38+
# Exact FGW between samples with uniform weights
39+
sol = ot.solve_gromov(Cs, Ct, M, loss='KL', alpha=0.7) # FGW with KL data fitting
40+
41+
42+
# recover solutions objects
43+
P = sol.plan # OT plan
44+
u, v = sol.potentials # dual variables
45+
value = sol.value # OT value
46+
47+
# for GW and FGW
48+
value_linear = sol.value_linear # linear part of the loss
49+
value_quad = sol.value_quad # quadratic part of the loss
50+
51+
```
52+
53+
Users are encouraged to use the new API (it is much simpler) but it might still be subjects to small changes before the release of POT 1.0 .
54+
55+
56+
We also fixed a number of issues, the most pressing being a problem of GPU memory allocation when pytorch is installed that will not happen now thanks to Lazy initialization of the backends. We now also have the possibility to deactivate some backends using environment which prevents POT from importing them and can lead to large import speedup.
757

8-
## 0.9.2dev
958

1059
#### New features
1160
+ Added support for [Nearest Brenier Potentials (SSNB)](http://proceedings.mlr.press/v108/paty20a/paty20a.pdf) (PR #526) + minor fix (PR #535)
@@ -27,6 +76,7 @@
2776
+ Add `fixed_structure` and `fixed_features` to entropic fgw barycenter solver (PR #578)
2877
+ Add new BAPG solvers with KL projections for GW and FGW (PR #581)
2978
+ Add Bures-Wasserstein barycenter in `ot.gaussian` and example (PR #582, PR #584)
79+
+ Domain adaptation method `SinkhornL1l2Transport` now supports JAX backend (PR #587)
3080
+ Added support for [Low-Rank Sinkhorn Factorization](https://arxiv.org/pdf/2103.04737.pdf) (PR #568)
3181

3282

ot/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
# utils functions
5959
from .utils import dist, unif, tic, toc, toq
6060

61-
__version__ = "0.9.2dev"
61+
__version__ = "0.9.2"
6262

6363
__all__ = ['emd', 'emd2', 'emd_1d', 'sinkhorn', 'sinkhorn2', 'utils',
6464
'datasets', 'bregman', 'lp', 'tic', 'toc', 'toq', 'gromov',

0 commit comments

Comments
 (0)