pylops_mpi.proximal.optimization.primal.ProximalGradient#
- pylops_mpi.proximal.optimization.primal.ProximalGradient(proxf, proxg, x0, epsg=1.0, tau=None, eta=1.0, niter=10, niterback=100, acceleration=None, tol=None, callback=None, show=False)[source]#
Proximal gradient (optionally accelerated)
Solves the following minimization problem using (Accelerated) Proximal gradient algorithm:
\[\mathbf{x} = \arg\,min_\mathbf{x} f(\mathbf{x}) + \epsilon g(\mathbf{x})\]where \(f(\mathbf{x})\) is a smooth convex function with a uniquely defined gradient and \(g(\mathbf{x})\) is any convex function that has a known proximal operator. Both
fandgmust be ofpylops_mpi.proximal.MPIProxOperatorkind.- Parameters:
- proxf
pylops_mpi.proximal.MPIProxOperator Proximal operator of f function (must have
gradimplemented)- proxg
pylops_mpi.proximal.MPIProxOperator Proximal operator of g function
- x0
pylops_mpi.DistributedArrayorpylops_mpi.StackedDistributedArray Initial vector
- epsg
floatornumpy.ndarray, optional Scaling factor of g function. Can be a scalar for iteration-independent scaling or a a 1d vector for iteration-dependent scaling
- tau
float, optional Positive scalar weight, which should satisfy the following condition to guarantees convergence: \(\tau \in (0, 1/L]\) where
Lis the Lipschitz constant of \(\nabla f\).- eta
float, optional Relaxation parameter (must be between 0 and 1, 0 excluded).
- niter
int, optional Number of iterations of iterative scheme
- niterback
int, optional Max number of iterations of backtracking
- acceleration
str, optional Acceleration (
None,vandenbergheorfista)- tol
float, optional Tolerance on change of objective function (used as stopping criterion). If
tol=None, run untilniteris reached or the other tolerance criterion is met- callback
callable, optional Function with signature (
callback(x)) to call after each iteration wherexis the current model vector- show
bool, optional Display iterations log
- proxf
- Returns:
- x
pylops_mpi.DistributedArrayorpylops_mpi.StackedDistributedArray Inverted model
- x
Notes
See
pyproximal.optimization.primal.ProximalGradient