optim.ISTBlock#
- class bartorch.optim.ISTBlock#
Bases:
ModuleOne iteration of iterative soft thresholding, BART’s
ist(italgos.c).With \(z = \operatorname{prox}_{\tau g}(x)\), a step is
\[x \leftarrow z - \tau \bigl( M (A^H A + \lambda) z - M A^H y \bigr),\]and
output()applies the proximal operator once more, as BART does after its loop.- 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().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, such asFourierL1,LaplaceorTotalVariation, whichADMMBlockandPRIDUBlocktake.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.
- output()#
Image of
state, with the proximal operator applied once more, as in BART.