GeezerVison is showing pythonot.github.io — ot.weak — POT Python Optimal Transport 0.9.7 documentation
ot.weak
Weak optimal ransport solvers
Functions
ot.weak. weak_optimal_transport ( Xa , Xb , a = None , b = None , verbose = False , log = False , G0 = None , ** kwargs ) [source]
Solves the weak optimal transport problem between two empirical distributions
\[ \begin{align}\begin{aligned}\gamma = \mathop{\arg \min}_\gamma \quad \sum_i \mathbf{a}_i \left(\mathbf{X^a}_i - \frac{1}{\mathbf{a}_i} \sum_j \gamma_{ij} \mathbf{X^b}_j \right)^2\\s.t. \ \gamma \mathbf{1} = \mathbf{a}\\ \gamma^T \mathbf{1} = \mathbf{b}\\ \gamma \geq 0\end{aligned}\end{align} \]
where :
Note
This function is backend-compatible and will work on arrays
from all compatible backends. But the algorithm uses the C++ CPU backend
which can lead to copy overhead on GPU arrays.
Uses the conditional gradient algorithm to solve the problem proposed
in [39] .
Parameters:
Xa (( ns , d ) array-like , float ) – Source samples
Xb (( nt , d ) array-like , float ) – Target samples
a (( ns , ) array-like , float ) – Source histogram (uniform weight if empty list)
b (( nt , ) array-like , float ) – Target histogram (uniform weight if empty list))
G0 (( ns , nt ) array-like , float ) – initial guess (default is indep joint density)
numItermax (int , optional ) – Max number of iterations
numItermaxEmd (int , optional ) – Max number of iterations for emd
stopThr (float , optional ) – Stop threshold on the relative variation (>0)
stopThr2 (float , optional ) – Stop threshold on the absolute variation (>0)
verbose (bool , optional ) – Print information along iterations
log (bool , optional ) – record log if True
Returns:
gamma (array-like, shape (ns, nt) ) – Optimal transportation matrix for the given
parameters
log (dict, optional ) – If input log is true, a dictionary containing the
cost and dual variables and exit status
References
[ 39]
Gozlan, N., Roberto, C., Samson, P. M., & Tetali, P. (2017).
Kantorovich duality for general transport costs and applications.
Journal of Functional Analysis, 273(11), 3327-3405.
ot.weak. weak_optimal_transport ( Xa , Xb , a = None , b = None , verbose = False , log = False , G0 = None , ** kwargs ) [source]
Solves the weak optimal transport problem between two empirical distributions
\[ \begin{align}\begin{aligned}\gamma = \mathop{\arg \min}_\gamma \quad \sum_i \mathbf{a}_i \left(\mathbf{X^a}_i - \frac{1}{\mathbf{a}_i} \sum_j \gamma_{ij} \mathbf{X^b}_j \right)^2\\s.t. \ \gamma \mathbf{1} = \mathbf{a}\\ \gamma^T \mathbf{1} = \mathbf{b}\\ \gamma \geq 0\end{aligned}\end{align} \]
where :
Note
This function is backend-compatible and will work on arrays
from all compatible backends. But the algorithm uses the C++ CPU backend
which can lead to copy overhead on GPU arrays.
Uses the conditional gradient algorithm to solve the problem proposed
in [39] .
Parameters:
Xa (( ns , d ) array-like , float ) – Source samples
Xb (( nt , d ) array-like , float ) – Target samples
a (( ns , ) array-like , float ) – Source histogram (uniform weight if empty list)
b (( nt , ) array-like , float ) – Target histogram (uniform weight if empty list))
G0 (( ns , nt ) array-like , float ) – initial guess (default is indep joint density)
numItermax (int , optional ) – Max number of iterations
numItermaxEmd (int , optional ) – Max number of iterations for emd
stopThr (float , optional ) – Stop threshold on the relative variation (>0)
stopThr2 (float , optional ) – Stop threshold on the absolute variation (>0)
verbose (bool , optional ) – Print information along iterations
log (bool , optional ) – record log if True
Returns:
gamma (array-like, shape (ns, nt) ) – Optimal transportation matrix for the given
parameters
log (dict, optional ) – If input log is true, a dictionary containing the
cost and dual variables and exit status
References
[ 39]
Gozlan, N., Roberto, C., Samson, P. M., & Tetali, P. (2017).
Kantorovich duality for general transport costs and applications.
Journal of Functional Analysis, 273(11), 3327-3405.