This new release contains several new features and bug fixes. Among the new features
we have novel Quantized FGW solvers that can be used to speed up the computation of the FGW loss on large datasets or to promote a structure on the pairwise matrices. We also updated the continuous entropic mapping to provide efficient out-of-sample continuous mapping thanks to entropic regularization. We also have a new general unbalanced solvers for ot.solve
and BFGS solver and illustrative example. Finally we have a new solver for the Low Rank Gromov-Wasserstein that can be used to compute the GW distance between two large scale datasets with a low rank approximation.
From a maintenance point of view, we now have a new option to install optional dependencies with pip install POT[all]
and the specific backends or submodules' dependencies may also be installed individually. The pip options are: backend-jax, backend-tf, backend-torch, cvxopt, dr, gnn, plot, all
. We also provide with this release support for NumPy 2.0 (the wheels should now be compatible with NumPy 2.0 and below). We also fixed several issues such as gradient sign errors for FGW solvers, empty weights for ot.emd2
, and line-search in partial GW. We also split the test/test_gromov.py
into test/gromov/
to make the tests more manageable.
New features
- NumPy 2.0 support is added (PR #629)
- New quantized FGW solvers
ot.gromov.quantized_fused_gromov_wasserstein
,ot.gromov.quantized_fused_gromov_wasserstein_samples
andot.gromov.quantized_fused_gromov_wasserstein_partitioned
(PR #603) ot.gromov._gw.solve_gromov_linesearch
now has an argument to specify if the matrices are symmetric in which case the computation can be done faster (PR #607).- Continuous entropic mapping (PR #613)
- New general unbalanced solvers for
ot.solve
and BFGS solver and illustrative example (PR #620) - Add gradient computation with envelope theorem to sinkhorn solver of
ot.solve
withgrad='envelope'
(PR #605). - Added support for Low rank Gromov-Wasserstein with
ot.gromov.lowrank_gromov_wasserstein_samples
(PR #614) - Optional dependencies may now be installed with
pip install POT[all]
The specific backends or submodules' dependencies may also be installed individually. The pip options are:backend-jax, backend-tf, backend-torch, cvxopt, dr, gnn, all
. The installation of thecupy
backend should be done with conda.
Closed issues
- Fix gpu compatibility of sr(F)GW solvers when
G0 is not None
(PR #596) - Fix doc and example for lowrank sinkhorn (PR #601)
- Fix issue with empty weights for
ot.emd2
(PR #606, Issue #534) - Fix a sign error regarding the gradient of
ot.gromov._gw.fused_gromov_wasserstein2
andot.gromov._gw.gromov_wasserstein2
for the kl loss (PR #610) - Fix same sign error for sr(F)GW conditional gradient solvers (PR #611)
- Split
test/test_gromov.py
intotest/gromov/
(PR #619) - Fix (F)GW barycenter functions to support computing barycenter on 1 input + deprecate structures as lists (PR #628)
- Fix line-search in partial GW and change default init to the interior of partial transport plans (PR #602)
- Fix
ot.da.sinkhorn_lpl1_mm
compatibility with JAX (PR #592) - Fiw linesearch import error on Scipy 1.14 (PR #642, Issue #641)
- Upgrade supported JAX versions from jax<=0.4.24 to jax<=0.4.30 (PR #643)
New Contributors
- @WilliamBonvini made their first contribution in #595
- @KrzakalaPaul made their first contribution in #607
- @matthewfeickert made their first contribution in #629
- @yikun-baio made their first contribution in #602
- @SarahG-579462 made their first contribution in #627
- @simon-forb made their first contribution in #637
Full Changelog: 0.9.3...0.9.4