optim.FISTA

optim.FISTA#

class bartorch.optim.FISTA#

Bases: IST

Fast iterative soft thresholding, looping FISTABlock.

Parameters:
  • regularizers (Regularizer or ImplicitPrior, default=None) – Exactly one term, whose transform is the identity: the iteration applies its proximal operator to the image.

  • maxiter (int, default=30)

  • step (float, default=0.95) – Step size.

  • eigen (bool, default=False) – Scale the step by the largest eigenvalue of the normal operator, estimated with 30 power iterations.

  • hogwild (bool, default=False) – BART’s hogwild setting.

  • pqr (tuple of float, default=None) – Acceleration parameters (p, q, r); None keeps BART’s.

  • cclambda (float, default=0.0) – Weight of an identity added to the normal operator.

  • precond (LinearOperator, default=None) – Left preconditioner, lsqr2_create’s precond_op: chained onto the normal operator and onto the adjoint, so the iteration sees M(A^H A + lambda) x = M A^H y. Must be positive definite – BART composes it without symmetrizing. BART’s own reconstructions pass none.

Examples

>>> fista = optim.FISTA(priors.Wavelet((-1, -2), 0.01), maxiter=50)
>>> x = fista(kspace, A)
>>> x = fista(kspace, A, x0=x)                # warm start

A term over a transform is refused, since the iteration is not given the transform:

>>> optim.FISTA(priors.TotalVariation((-1, -2), 0.01))(kspace, A)
Traceback (most recent call last):
    ...
ValueError: FISTA applies the proximal operator to the image, ...

Also has the methods and properties of IST.

Examples using FISTA#

Operators and solvers

Operators and solvers