pylops_mpi.optimization.cls_sparsity.FISTA#
- class pylops_mpi.optimization.cls_sparsity.FISTA(Op, callbacks=None)[source]#
Fast Iterative Shrinkage-Thresholding Algorithm (FISTA).
Solve an optimization problem with \(L_p, \; p=0, 0.5, 1\) regularization, given the operator
Opand datay. The operator can be real or complex, and should ideally be either square \(N=M\) or underdetermined \(N<M\).- Parameters:
- Op
pylops_mpi.MPILinearOperatororpylops_mpi.MPIStackedLinearOperator Operator to invert
- Op
- Attributes:
- ncp
module Array module used by the solver (obtained via
pylops.utils.backend.get_array_module) ). Available only aftersetupis called.- Opmatvec
callable Function handle to
Op.matvecorOp.matmatdepending on the number of dimensions ofy.- Oprmatvec
callable Function handle to
Op.rmatvecorOp.rmatmatdepending on the number of dimensions ofy.- SOpmatvec
callable Function handle to
SOp.matvecorSOp.matmatdepending on the number of dimensions ofy.- SOprmatvec
callable Function handle to
SOp.rmatvecorSOp.rmatmatdepending on the number of dimensions ofy.- threshf
callable Function handle to the chosen thresholding method.
- thresh
float Threshold.
- normresold
float Old norm of the residual.
- t
float FISTA auxiliary coefficient (not used in ISTA).
- cost
list History of the L2 norm of the total objectiv function. Available only after
setupis called and updated at each call tostep.- iiter
int Current iteration number. Available only after
setupis called and updated at each call tostep.
- ncp
- Raises:
- NotImplementedError
If
threshkindis different from hard, soft, half.
See also
ISTAIterative Shrinkage-Thresholding Algorithm (ISTA).
Notes
Solves the following synthesis problem for the operator \(\mathbf{Op}\) and the data \(\mathbf{y}\):
\[J = \|\mathbf{y} - \mathbf{Op}\,\mathbf{x}\|_2^2 + \epsilon \|\mathbf{x}\|_p\]or the analysis problem:
\[J = \|\mathbf{y} - \mathbf{Op}\,\mathbf{x}\|_2^2 + \epsilon \|\mathbf{SOp}^H\,\mathbf{x}\|_p\]if
SOpis provided.The Fast Iterative Shrinkage-Thresholding Algorithm (FISTA) [1] is used, where \(p=0, 0.5, 1\). This is a modified version of ISTA solver with improved convergence properties and limited additional computational cost. Similarly to the ISTA solver, the choice of the thresholding algorithm to apply at every iteration is based on the choice of \(p\).
[1]Beck, A., and Teboulle, M., “A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems”, SIAM Journal on Imaging Sciences, vol. 2, pp. 183-202. 2009.
Methods
__init__(Op[, callbacks])callback(x, *args, **kwargs)Callback routine
finalize([show])Finalize solver
memory_usage([show, unit])Compute memory usage of the solver
run(x[, niter, show, itershow])Run solver
setup(y, x0[, niter, SOp, eps, alpha, ...])Setup solver
solve(y, x0[, niter, SOp, eps, alpha, ...])step(x, z[, show])Run one step of solver