diff options
author | RĂ©mi Flamary <remi.flamary@gmail.com> | 2020-12-22 18:35:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-22 18:35:40 +0100 |
commit | f6139428e70ce964de3bef703ef13aa701a83620 (patch) | |
tree | dac5b59d6b53fdbc4bcfda2db7eb666cbcaa49af /ot/bregman.py | |
parent | cb3e24aea8a2492ccb7e7664533ea3543b14c8ac (diff) |
[WIP] Update documentation "Why OT" section (#220)
* add some text + discussion sinkhorn
* stating wrk on why POT
* fix sphinx warnings + make html-noplot
* discussion when not to use POT
* add discussion which sinkhorn
* edits on quickstart
* more
* remove warnings :any:
* more
* done
* remove ref
Co-authored-by: Alexandre Gramfort <alexandre.gramfort@m4x.org>
Diffstat (limited to 'ot/bregman.py')
-rw-r--r-- | ot/bregman.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ot/bregman.py b/ot/bregman.py index f1f8437..dcd35e1 100644 --- a/ot/bregman.py +++ b/ot/bregman.py @@ -67,6 +67,21 @@ def sinkhorn(a, b, M, reg, method='sinkhorn', numItermax=1000, log : bool, optional record log if True + **Choosing a Sinkhorn solver** + + By default and when using a regularization parameter that is not too small + the default sinkhorn solver should be enough. If you need to use a small + regularization to get sharper OT matrices, you should use the + :any:`ot.bregman.sinkhorn_stabilized` solver that will avoid numerical + errors. This last solver can be very slow in practice and might not even + converge to a reasonable OT matrix in a finite time. This is why + :any:`ot.bregman.sinkhorn_epsilon_scaling` that relie on iterating the value + of the regularization (and using warm start) sometimes leads to better + solutions. Note that the greedy version of the sinkhorn + :any:`ot.bregman.greenkhorn` can also lead to a speedup and the screening + version of the sinkhorn :any:`ot.bregman.screenkhorn` aim a providing a + fast approximation of the Sinkhorn problem. + Returns ------- @@ -175,6 +190,21 @@ def sinkhorn2(a, b, M, reg, method='sinkhorn', numItermax=1000, log : bool, optional record log if True + **Choosing a Sinkhorn solver** + + By default and when using a regularization parameter that is not too small + the default sinkhorn solver should be enough. If you need to use a small + regularization to get sharper OT matrices, you should use the + :any:`ot.bregman.sinkhorn_stabilized` solver that will avoid numerical + errors. This last solver can be very slow in practice and might not even + converge to a reasonable OT matrix in a finite time. This is why + :any:`ot.bregman.sinkhorn_epsilon_scaling` that relie on iterating the value + of the regularization (and using warm start) sometimes leads to better + solutions. Note that the greedy version of the sinkhorn + :any:`ot.bregman.greenkhorn` can also lead to a speedup and the screening + version of the sinkhorn :any:`ot.bregman.screenkhorn` aim a providing a + fast approximation of the Sinkhorn problem. + Returns ------- W : (n_hists) ndarray or float |