optim.ISTBlock#

class bartorch.optim.ISTBlock#

Bases: Module

One 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 in start().

  • 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.ishape to itself, positive definite (lsqr2_create’s precond_op).

Raises:
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.