You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Compute the optimal transport plan for the entropically regularized optimal transport problem
468
-
with source and target marginals `μ` and `ν`, cost matrix `C` of size `(length(μ), length(ν))`, and entropic regularisation parameter `ε`. Employs the log-domain stabilized algorithm of Schmitzer et al. [^S19] with ε-scaling.
469
-
470
-
`k` ε-scaling steps are used with scaling factor `lambda`, i.e. sequentially solve Sinkhorn using `sinkhorn_stabilized` with regularisation parameters
Compute the optimal transport plan for the entropically regularized optimal transport problem
498
-
with source and target marginals `μ` and `ν`, cost matrix `C` of size `(length(μ), length(ν))`, and entropic regularisation parameter `ε`. Employs the log-domain stabilized algorithm of Schmitzer et al. [^S19]
499
-
500
-
`alpha` and `beta` are initial scalings for the stabilized Gibbs kernel. If not specified, `alpha` and `beta` are initialised to zero.
501
-
502
-
If `return_duals = true`, then the optimal dual variables `(u, v)` corresponding to `(μ, ν)` are returned. Otherwise, the coupling `γ` is returned.
503
-
504
-
[^S19]: Schmitzer, B., 2019. Stabilized sparse scaling algorithms for entropy regularized transport problems. SIAM Journal on Scientific Computing, 41(3), pp.A1443-A1481.
505
-
506
-
See also: [`sinkhorn`](@ref)
507
-
"""
508
-
functionsinkhorn_stabilized(
509
-
μ,
510
-
ν,
511
-
C,
512
-
ε;
513
-
absorb_tol=1e3,
514
-
maxiter=1_000,
515
-
tol=nothing,
516
-
atol=tol,
517
-
rtol=nothing,
518
-
check_convergence=10,
519
-
alpha=zero(μ),
520
-
beta=zero(ν),
521
-
return_duals=false,
522
-
)
523
-
if tol !==nothing
524
-
Base.depwarn(
525
-
"keyword argument `tol` is deprecated, please use `atol` and `rtol`",
526
-
:sinkhorn_stabilized,
527
-
)
528
-
end
529
-
sum(μ) ≈sum(ν) ||
530
-
throw(ArgumentError("source and target marginals must have the same mass"))
0 commit comments