This new release contains several new features, starting with a novel Gaussian Mixture Model Optimal Transport (GMM-OT) solver to compare GMM while enforcing the transport plan to remain a GMM, that benefits from a closed-form solution making it practical for high-dimensional matching problems. We also extended our general unbalanced OT solvers to support any non-negative reference measure in the regularization terms, before adding the novel translation invariant UOT solver showcasing a higher convergence speed.
We also implemented several new solvers and enhanced existing ones to perform OT across spaces. These include a semi-relaxed FGW barycenter solver, coupled with new initialization heuristics for the inner divergence computation, to perform graph partitioning or dictionary learning. Followed by novel unbalanced FGW and Co-optimal transport solvers to promote robustness to outliers in such matching problems. And we finally updated the implementation of partial GW now supporting asymmetric structures and the KL divergence, while leveraging a new generic conditional gradient solver for partial transport problems enabling significant speed improvements. These latest updates required some modifications to the line search functions of our generic conditional gradient solver, paving the way for future improvements to other GW-based solvers.
Last but not least, we implemented a pre-commit scheme to automatically correct common programming mistakes likely to be made by our future contributors.
This release also contains few bug fixes, concerning the support of any metric in ot.emd_1d
/ ot.emd2_1d
, and the support of any weights in ot.gaussian
.
Breaking change
- Custom functions provided as parameter
line_search
toot.optim.generic_conditional_gradient
must now have the signatureline_search(cost, G, deltaG, Mi, cost_G, df_G, **kwargs)
, adding as inputdf_G
the gradient of the regularizer evaluated at the transport planG
. This change aims at improving speed of solvers having quadratic polynomial functions as regularizer such as the Gromov-Wassertein loss (PR #663).
New features
- New linter based on pre-commit using ruff, codespell and yamllint (PR #681)
- Added feature
mass=True
fornx.kl_div
(PR #654) - Implemented Gaussian Mixture Model OT
ot.gmm
(PR #649) - Added feature
semirelaxed_fgw_barycenters
and generic FGW-related barycenter updatesupdate_barycenter_structure
andupdate_barycenter_feature
(PR #659) - Added initialization heuristics for sr(F)GW problems via
semirelaxed_init_plan
, integrated in all sr(F)GW solvers (PR #659) - Improved
ot.plot.plot1D_mat
(PR #649) - Added
nx.det
(PR #649) nx.sqrtm
is now broadcastable (takes ..., d, d) inputs (PR #649)- Restructured
ot.unbalanced
module (PR #658) - Added
ot.unbalanced.lbfgsb_unbalanced2
and add flexible reference measurec
in all unbalanced solvers (PR #658) - Implemented Fused unbalanced Gromov-Wasserstein and unbalanced Co-Optimal Transport (PR #677)
- Notes before depreciating partial Gromov-Wasserstein function in
ot.partial
moved to ot.gromov (PR #663) - Create
ot.gromov._partial
add new featuresloss_fun = "kl_loss"
andsymmetry=False
to all solvers while increasing speed + updating adequatlyot.solvers
(PR #663) - Added
ot.unbalanced.sinkhorn_unbalanced_translation_invariant
(PR #676)
Closed issues
- Fixed
ot.gaussian
ignoring weights when computing means (PR #649, Issue #648) - Fixed
ot.emd_1d
andot.emd2_1d
incorrectly allowing any metric (PR #670, Issue #669)
Full Changelog: 0.9.4...0.9.5