optim.FISTABlock#

class bartorch.optim.FISTABlock#

Bases: ISTBlock

One iteration of fast iterative soft thresholding, BART’s fista (italgos.c).

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

  • 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)\); None is 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.ishape to itself, positive definite (lsqr2_create’s precond_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.