0.9.1
This new release contains several new features and bug fixes.
New features include a new submodule ot.gnn
that contains two new Graph neural network layers (compatible with Pytorch Geometric) for template-based pooling of graphs with an example on graph classification. Related to this, we also now provide FGW and semi relaxed FGW solvers for which the resulting loss is differentiable w.r.t. the parameter alpha
. Other contributions on the (F)GW front include a new solver for the Proximal Point algorithm that can be used to solve entropic GW problems (using the parameter solver="PPA"
), new solvers for entropic FGW barycenters, novels Sinkhorn-based solvers for entropic semi-relaxed (F)GW, the possibility to provide a warm-start to the solvers, and optional marginal weights of the samples (uniform weights ar used by default). Finally we added in the submodule ot.gaussian
and ot.da
new loss and mapping estimators for the Gaussian Gromov-Wasserstein that can be used as a fast alternative to GW and estimates linear mappings between unregistered spaces that can potentially have different size (See the update linear mapping example for an illustration).
We also provide a new solver for the Entropic Wasserstein Component Analysis that is a generalization of the celebrated PCA taking into account the local neighborhood of the samples. We also now have a new solver in ot.smooth
for the sparsity-constrained OT (last plot) that can be used to find regularized OT plans with sparsity constraints. Finally we have a first multi-marginal solver for regular 1D distributions with a Monge loss (see here).
The documentation and testings have also been updated. We now have nearly 95% code coverage with the tests. The documentation has been updated and some examples have been streamlined to build more quickly and avoid timeout problems with CircleCI. We also added an optional CI on GPU for the master branch and approved PRs that can be used when a GPU runner is online.
Many other bugs and issues have been fixed and we want to thank all the contributors, old and new, who made this release possible. More details below.
New features
- Gaussian Gromov Wasserstein loss and mapping (PR #498)
- Template-based Fused Gromov Wasserstein GNN layer in
ot.gnn
(PR #488) - Make alpha parameter in semi-relaxed Fused Gromov Wasserstein differentiable (PR #483)
- Make alpha parameter in Fused Gromov Wasserstein differentiable (PR #463)
- Added the sparsity-constrained OT solver to
ot.smooth
and addedprojection_sparse_simplex
toot.utils
(PR #459) - Add tests on GPU for master branch and approved PR (PR #473)
- Add
median
method to all inherited classes ofbackend.Backend
(PR #472) - Update tests for macOS and Windows, speedup documentation (PR #484)
- Added Proximal Point algorithm to solve GW problems via a new parameter
solver="PPA"
inot.gromov.entropic_gromov_wasserstein
+ examples (PR #455) - Added features
warmstart
andkwargs
inot.gromov.entropic_gromov_wasserstein
to respectively perform warmstart on dual potentials and pass parameters toot.sinkhorn
(PR #455) - Added sinkhorn projection based solvers for FGW
ot.gromov.entropic_fused_gromov_wasserstein
and entropic FGW barycenters + examples (PR #455) - Added features
warmstartT
andkwargs
to all CG and entropic (F)GW barycenter solvers (PR #455) - Added entropic semi-relaxed (Fused) Gromov-Wasserstein solvers in
ot.gromov
+ examples (PR #455) - Make marginal parameters optional for (F)GW solvers in
._gw
,._bregman
and._semirelaxed
(PR #455) - Add Entropic Wasserstein Component Analysis (ECWA) in ot.dr (PR #486)
- Added feature Efficient Discrete Multi Marginal Optimal Transport Regularization + examples (PR #454)
Closed issues
- Fix gromov conventions (PR #497)
- Fix change in scipy API for
cdist
(PR #487) - More permissive check_backend (PR #494)
- Fix circleci-redirector action and codecov (PR #460)
- Fix issues with cuda for ot.binary_search_circle and with gradients for ot.sliced_wasserstein_sphere (PR #457)
- Major documentation cleanup (PR #462, PR #467, PR #475)
- Fix gradients for "Wasserstein2 Minibatch GAN" example (PR #466)
- Faster Bures-Wasserstein distance with NumPy backend (PR #468)
- Fix issue backend for ot.sliced_wasserstein_sphere ot.sliced_wasserstein_sphere_unif (PR #471)
- Fix issue with ot.barycenter_stabilized when used with PyTorch tensors and log=True (PR #474)
- Fix
utils.cost_normalization
function issue to work with multiple backends (PR #472) - Fix precision error on marginal sums and (Issue #429, PR #496)
New Contributors
- @kachayev made their first contribution in #462
- @liutianlin0121 made their first contribution in #459
- @francois-rozet made their first contribution in #468
- @framunoz made their first contribution in #472
- @SoniaMaz8 made their first contribution in #483
- @tomMoral made their first contribution in #494
- @x12hengyu made their first contribution in #454
Full Changelog: 0.9.0...0.9.1