pylops.optimization.sparsity.ista#

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

Iterative Shrinkage-Thresholding Algorithm (ISTA).

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.LinearOperator

Operator to invert

ynumpy.ndarray

Data of size \([N \times 1]\)

x0: :obj:`numpy.ndarray`, optional

Initial guess

niterint

Number of iterations

SOppylops.LinearOperator, 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

Tolerance. Stop iterations if difference between inverted model at subsequent iterations is smaller than tol

threshkindstr, optional

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

percfloat, optional

Percentile, as percentage of values to be kept by thresholding (to be provided when thresholding is soft-percentile or half-percentile)

decaynumpy.ndarray, optional

Decay factor to be applied to thresholding during iterations

monitorresbool, optional

Monitor that residual is decreasing

showbool, optional

Display logs

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

Returns
xinvnumpy.ndarray

Inverted model

niterint

Number of effective iterations

costnumpy.ndarray

History of cost function

Raises
NotImplementedError

If threshkind is different from hard, soft, half, soft-percentile, or half-percentile

ValueError

If perc=None when threshkind is soft-percentile or half-percentile

ValueError

If monitorres=True and residual increases

See also

OMP

Orthogonal Matching Pursuit (OMP).

FISTA

Fast Iterative Shrinkage-Thresholding Algorithm (FISTA).

SPGL1

Spectral Projected-Gradient for L1 norm (SPGL1).

SplitBregman

Split Bregman for mixed L2-L1 norms.

Notes

See pylops.optimization.cls_sparsity.ISTA

Examples using pylops.optimization.sparsity.ista#

MP, OMP, ISTA and FISTA

MP, OMP, ISTA and FISTA

03. Solvers

03. Solvers