FISTA#

class cuqi.solver.FISTA(A, b, proximal, x0, maxit=100, stepsize=1.0, abstol=1e-14, adaptive=True)#

Fast Iterative Shrinkage-Thresholding Algorithm for regularized least squares problems.

Reference: Beck, Amir, and Marc Teboulle. “A fast iterative shrinkage-thresholding algorithm for linear inverse problems.” SIAM journal on imaging sciences 2.1 (2009): 183-202.

Minimize ||Ax-b||^2 + f(x).

Parameters:
  • A (ndarray or callable f(x,*args).)

  • b (ndarray.)

  • proximal (callable f(x, gamma) for proximal mapping.)

  • x0 (ndarray. Initial guess.)

  • maxit (The maximum number of iterations.)

  • stepsize (The stepsize of the gradient step.)

  • abstol (The numerical tolerance for convergence checks.)

  • adapative (Whether to use FISTA or ISTA.)

Example

from cuqi.solver import FISTA,  ProximalL1
import scipy as sp
import numpy as np

rng = np.random.default_rng()

m, n = 10, 5
A = rng.standard_normal((m, n))
b = rng.standard_normal(m)
stepsize = 0.99/(sp.linalg.interpolative.estimate_spectral_norm(A)**2)
x0 = np.zeros(n)
fista = FISTA(A, b, proximal = ProximalL1, x0, stepsize = stepsize, maxit = 100, abstol=1e-12, adaptive = True)
sol, _ = fista.solve()
__init__(A, b, proximal, x0, maxit=100, stepsize=1.0, abstol=1e-14, adaptive=True)#

Methods

__init__(A, b, proximal, x0[, maxit, ...])

solve()