optim.FISTABlock#
- class bartorch.optim.FISTABlock#
Bases:
ISTBlockOne iteration of fast iterative soft thresholding, BART’s
fista(italgos.c).ISTBlockwith Nesterov’s momentum between the proximal step and the gradient step, \(t_{k+1} = (p + \sqrt{q + r t_k^2}) / 2\).- Parameters:
prior (Regularizer or ImplicitPrior) – The single term \(g\); its transform must be the identity.
step (float, default=0.95) – Step size \(\tau\).
eigen (bool, default=False) – Divide the step by
maxeigen()of the normal operator, estimated instart().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)\);
Noneis BART’s(1, 1, 4).cclambda (float, default=0.0) – \(\lambda\), the 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).
- Raises:
ValueError – Not exactly one term; at
start(), a term whose transform is not the identity.TypeError – A term with auxiliary variables.
- start()#
Initial state of a run.
- Parameters:
y (tensor) – Data of
A.oshape, or(batch, *A.oshape).A (LinearOperator) – Encoding operator.
x0 (tensor, default=None) – Starting image; zero when omitted, as in BART.
- Returns:
The start and \(M A^H y\), kept for every step.
- Return type:
State
- forward()#
Take one iteration from
state; returns the next state.
Also has the methods and properties of ISTBlock.