Nonlinear operators#
bartorch.nlop represents a nonlinear operator \(F\) from one or more inputs to
one or more outputs, with its derivative \(DF_x\) at a point and the adjoint of
that derivative. F(*x) evaluates it, F.linearize(*x) returns \(DF_x\) as a
LinearOperator, a @ b composes (applying b first,
either side possibly linear), and F.partial(i, value) fixes input i.
Nonlinear forward models describes the reconstruction problems these
operators model, and Differentiation through reconstruction how they and the
Gauss-Newton steps enter autograd.
Operator class#
Object |
Description |
|---|---|
Base class: evaluation, derivative and its adjoint, composition, partial application, linearization |
|
Nonlinear operator from a differentiable PyTorch function, with derivative and adjoint from autograd |
MRI encoding models#
Object |
Inputs |
Model |
|---|---|---|
Image, Sobolev-weighted coil coefficients |
BART’s |
|
Image, coil coefficients |
|
|
Image, coil coefficients |
|
|
Image, sensitivities |
Product of image and unweighted sensitivities in front of any linear encoding |
Signal models#
Quantitative signal models evaluated by TorchSim; each maps parameter maps to one image per contrast.
Object |
Unknowns |
Signal |
|---|---|---|
Any TorchSim model’s parameters |
Base class: a TorchSim |
|
\(T_1\), optional complex amplitude |
Inversion recovery at a series of inversion times |
|
\(T_2\) or \(T_2^*\), optional complex amplitude |
Mono-exponential decay at a series of echo times |
|
Any simulated tissue property |
Bloch simulation of a TorchSim sequence |
Elementary operators#
Object |
Description |
|---|---|
Pointwise product of two inputs, with broadcasting |
|
Pointwise quotient of two inputs |
|
\(a x + b z\) of two inputs |
|
Operator of no inputs returning a fixed tensor |
|
\(e^x\) |
|
\(\log x\) |
|
\(\sqrt{x}\) |
|
\(x^p\) |
|
\(x + c\) |
|
\(1/x\) |
|
\(\lvert x \rvert\) |
|
\(\sqrt{\lvert x \rvert^2 + \epsilon}\) |
|
\(x / \lvert x \rvert\) |
|
\(\sum \lvert x \rvert^2\) over axes |
|
\(\sqrt{\sum \lvert x \rvert^2}\) over axes |
Gauss-Newton methods#
Object |
Description |
|---|---|
Iteratively regularized Gauss-Newton solver for \(F(x) = y\) |
|
One Gauss-Newton step as a |
|
Functional form of |
IRGNM(inner=None) solves each linearized problem by conjugate gradients
inside BART, as nlinv does; IRGNM(inner=solver) passes it to a solver from
bartorch.optim, whose regularization terms then apply to the step.
The examples Nonlinear inversion and Parameter maps straight from k-space use these objects in complete reconstructions.