Optimization#
bartorch.optim provides BART’s iterative algorithms for linear inverse
problems. A solver is configured by its constructor and called as
solver(y, A, x0=None), with y the data and A a
LinearOperator; it reproduces BART’s iteration,
including its step sizes, penalty updates and stopping rules. An iteration
block is one step of the same iteration as a torch.nn.Module. A leading
axis of y beyond the codomain of A is a batch of independent problems.
Inverse problems and their solvers states the problems and algorithms, and
Differentiation through reconstruction the backward pass of each solver.
Solver |
Problem |
Regularization |
Backward pass |
|---|---|---|---|
\(\min_x \lVert Ax-y\rVert^2 + \lambda\lVert x\rVert^2 + \sum_i w_i \lVert G_i x - b_i\rVert^2\) |
|
Implicit: one further conjugate-gradient solve |
|
\(\min_x \tfrac12\lVert Ax-y\rVert^2 + g(x)\) |
One term with \(G = I\) |
Unrolled |
|
As IST, with momentum |
One term with \(G = I\) |
Unrolled |
|
\(\min_x \tfrac12\lVert Ax-y\rVert^2 + \sum_j g_j(G_j x)\) |
Any number of terms, any \(G_j\) |
Unrolled; each x-update implicit |
|
As ADMM |
Any number of terms, any \(G_j\) |
Unrolled |
|
Feasibility: repeated projections |
Projections and terms at unit weight |
Unrolled |
Terms are the objects of bartorch.priors; an
ImplicitPrior is accepted wherever a regularization term is.
Linear least squares#
Regularized least squares#
Object |
Description |
|---|---|
Iterative soft thresholding (proximal gradient) |
|
Fast iterative soft thresholding (accelerated proximal gradient) |
|
Alternating direction method of multipliers |
|
Chambolle-Pock primal-dual iteration |
|
Power-iteration estimate of the largest eigenvalue of \(A^H A\) |
Projection methods#
Functional interface#
Each function constructs the corresponding solver and calls it:
optim.fista(y, A, term, maxiter=30) is optim.FISTA(term, maxiter=30)(y, A).
Iteration blocks#
state = block.start(y, A, x0) initializes a run, state = block(state, A)
takes one step and block.output(state, A) returns the image. Step sizes and
penalty weights are torch.nn.Parameter objects, frozen until
requires_grad_() is called on them.
Object |
Description |
|---|---|
One iterative soft-thresholding step |
|
One fast iterative soft-thresholding step |
|
One ADMM step |
|
One primal-dual step |
Fixed-point methods#
Object |
Description |
|---|---|
An iteration block iterated to its fixed point and differentiated implicitly there (deep equilibrium) |
Data scaling#
Object |
Description |
|---|---|
BART’s estimate of the data scale by which |
Operators and solvers assembles a BART reconstruction from an operator, a term and a solver.