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 f and g must be of pylops_mpi.proximal.MPIProxOperator kind.

Parameters:
proxfpylops_mpi.proximal.MPIProxOperator

Proximal operator of f function (must have grad implemented)

proxgpylops_mpi.proximal.MPIProxOperator

Proximal operator of g function

x0pylops_mpi.DistributedArray or pylops_mpi.StackedDistributedArray

Initial vector

epsgfloat or numpy.ndarray, optional

Scaling factor of g function. Can be a scalar for iteration-independent scaling or a a 1d vector for iteration-dependent scaling

taufloat, optional

Positive scalar weight, which should satisfy the following condition to guarantees convergence: \(\tau \in (0, 1/L]\) where L is the Lipschitz constant of \(\nabla f\).

etafloat, optional

Relaxation parameter (must be between 0 and 1, 0 excluded).

niterint, optional

Number of iterations of iterative scheme

niterbackint, optional

Max number of iterations of backtracking

accelerationstr, optional

Acceleration (None, vandenberghe or fista)

tolfloat, optional

Tolerance on change of objective function (used as stopping criterion). If tol=None, run until niter is reached or the other tolerance criterion is met

callbackcallable, optional

Function with signature (callback(x)) to call after each iteration where x is the current model vector

showbool, optional

Display iterations log

Returns:
xpylops_mpi.DistributedArray or pylops_mpi.StackedDistributedArray

Inverted model

Notes

See pyproximal.optimization.primal.ProximalGradient