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 datay
. The operator can be real or complex, and should ideally be either square \(N=M\) or underdetermined \(N<M\).- Parameters
- Op
pylops.LinearOperator
Operator to invert
- y
numpy.ndarray
Data of size \([N \times 1]\)
- x0: :obj:`numpy.ndarray`, optional
Initial guess
- niter
int
Number of iterations
- SOp
pylops.LinearOperator
, optional Regularization operator (use when solving the analysis problem)
- eps
float
, optional Sparsity damping
- alpha
float
, 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.- eigsdict
dict
, optional Dictionary of parameters to be passed to
pylops.LinearOperator.eigs
method when computing the maximum eigenvalue- tol
float
, optional Tolerance. Stop iterations if difference between inverted model at subsequent iterations is smaller than
tol
- threshkind
str
, optional Kind of thresholding (‘hard’, ‘soft’, ‘half’, ‘hard-percentile’, ‘soft-percentile’, or ‘half-percentile’ - ‘soft’ used as default)
- perc
float
, optional Percentile, as percentage of values to be kept by thresholding (to be provided when thresholding is soft-percentile or half-percentile)
- decay
numpy.ndarray
, optional Decay factor to be applied to thresholding during iterations
- monitorres
bool
, optional Monitor that residual is decreasing
- show
bool
, optional Display logs
- itershow
tuple
, 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.
- callback
callable
, optional Function with signature (
callback(x)
) to call after each iteration wherex
is the current model vector
- Op
- Returns
- xinv
numpy.ndarray
Inverted model
- niter
int
Number of effective iterations
- cost
numpy.ndarray
History of cost function
- xinv
- Raises
- NotImplementedError
If
threshkind
is different from hard, soft, half, soft-percentile, or half-percentile- ValueError
If
perc=None
whenthreshkind
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