pylops_mpi.optimization.sparsity.fista#

pylops_mpi.optimization.sparsity.fista(Op, y, x0, niter=10, SOp=None, eps=0.1, alpha=None, eigsdict=None, tol=1e-10, rtol=0.0, rtol1=0.0, threshkind='soft', decay=None, monitorres=False, show=False, itershow=(10, 10, 10), callback=None)[source]#

Fast Iterative Shrinkage-Thresholding Algorithm (FISTA).

Solve an optimization problem with \(L^p, \; p=0, 0.5, 1\) regularization, given the operator Op and data y. The operator can be real or complex, and should ideally be either square \(N=M\) or underdetermined \(N<M\).

Parameters:
Oppylops_mpi.MPILinearOperator

Operator to invert

ypylops_mpi.DistributedArray

Data

x0: :obj:`pylops_mpi.DistributedArray`, optional

Initial guess

niterint, optional

Number of iterations

SOppylops_mpi.MPILinearOperator, optional

Regularization operator (use when solving the analysis problem)

epsfloat, optional

Sparsity damping

alphafloat, optional

Step size. To guarantee convergence, ensure \(\alpha \le 1/\lambda_\text{max}\), where \(\lambda_\text{max}\) is the largest eigenvalue of \(\mathbf{Op}^H\mathbf{Op}\). If None, the maximum eigenvalue is estimated and the optimal step size is chosen as \(1/\lambda_\text{max}\). If provided, the convergence criterion will not be checked internally.

eigsdictdict, optional

Dictionary of parameters to be passed to pylops.LinearOperator.eigs method when computing the maximum eigenvalue

tolfloat, optional

Absolute tolerance on model update. Stop iterations if difference between inverted model at subsequent iterations is smaller than tol

rtolfloat, optional

Relative tolerance on total cost function wrt initial total cost function. Stops the solver when the ratio of the current total cost function to the initial total cost function is below this value.

rtol1float, optional

Relative tolerance on total cost function wrt to data. Stops the solver when the ratio of the current total cost function to the data norm is below this value.

threshkindstr, optional

Kind of thresholding (‘hard’, ‘soft’, ‘half’ - ‘soft’ used as default)

decaynumpy.ndarray, optional

Decay factor to be applied to thresholding during iterations

monitorresbool, optional

Monitor that residual is decreasing

showbool, optional

Display iterations log

itershowtuple, optional

Display set log for the first N1 steps, last N2 steps, and every N3 steps in between where N1, N2, N3 are the three element of the list.

callbackcallable, optional

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

preallocatebool, optional

Pre-allocate all variables used by the solver.

Returns
——-
xinvpylops_mpi.DistributedArray

Inverted model

niterint

Number of effective iterations

costnumpy.ndarray, optional

History of cost (including regularization term)

Raises:
NotImplementedError

If threshkind is different from hard, soft, half.