Skip to content

0.9.1

Compare
Choose a tag to compare
@rflamary rflamary released this 09 Aug 12:42
· 108 commits to master since this release
683944e

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 added projection_sparse_simplex to ot.utils (PR #459)
  • Add tests on GPU for master branch and approved PR (PR #473)
  • Add median method to all inherited classes of backend.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" in ot.gromov.entropic_gromov_wasserstein + examples (PR #455)
  • 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)
  • Added sinkhorn projection based solvers for FGW ot.gromov.entropic_fused_gromov_wasserstein and entropic FGW barycenters + examples (PR #455)
  • Added features warmstartT and kwargs 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

Full Changelog: 0.9.0...0.9.1