optim.FISTA#
- class bartorch.optim.FISTA#
Bases:
ISTFast iterative soft thresholding, looping
FISTABlock.Solves \(\min_x \tfrac12 \| A x - y \|^2 + g(x)\) with Nesterov momentum.
- Parameters:
regularizers (Regularizer or ImplicitPrior, default=None) – The single term \(g\); its transform must be the identity.
maxiter (int, default=30) – Number of iterations.
step (float, default=0.95) – Step size \(\tau\) of the gradient step.
eigen (bool, default=False) – Divide the step by
maxeigen()of the normal operator.hogwild (bool, default=False) – Halve the step after 10 iterations, and again after each further 20, 40, … iterations.
pqr (tuple of float, default=None) – \((p, q, r)\) of the momentum update \(t_{k+1} = (p + \sqrt{q + r t_k^2}) / 2\);
Noneis BART’s(1, 1, 4).cclambda (float, default=0.0) – Weight of an identity added to the normal operator.
precond (LinearOperator, default=None) – Left preconditioner \(M\) from
A.ishapeto itself, positive definite (lsqr2_create’sprecond_op); BART’s reconstructions use none.
- Raises:
ValueError – Not exactly one term; at the call, a term whose transform is not the identity.
TypeError – A term with auxiliary variables.
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.