bartorch.linop.LinearOperator

bartorch.linop.LinearOperator#

class bartorch.linop.LinearOperator#

A linear map between two C-order shapes, with an adjoint.

A subclass is defined either by _create(), which builds one of BART’s operators, or in Python by forward() and adjoint(), and normal() where a cheaper form exists. BART reaches a Python-defined operator through callbacks, one crossing into Python per application.

Both kinds compose into a single BART operator, are solved by bartorch.optim, and differentiate in torch. The backward pass of A(x) is A.adjoint, which for complex tensors is the conjugate Wirtinger gradient torch expects, not the transpose.

ishape, oshape

Domain and codomain, C order.

Type:

tuple of int

device#

Where the operator does its arithmetic, when that is not where its operands are.

Type:

torch.device or None

__init__()#

Methods

A(x, **kwargs)

A x, under deepinv's name.

A_adjoint(y, **kwargs)

A^H y, under deepinv's name, recorded for autograd.

A_adjoint_A(x, **kwargs)

A^H A x, under deepinv's name, recorded for autograd.

A_dagger(y, **kwargs)

The pseudo-inverse, under deepinv's name.

__init__()

adjoint(y[, out])

A^H y, without recording for autograd.

cogram()

A A^H as an operator.

conj()

conj(A): conjugate the input, apply, conjugate the output.

forward(x[, out])

A x, without recording for autograd.

gram()

A^H A as an operator.

normal(x[, out])

A^H A x.

opnorm()

The spectral norm, by BART's power iteration on A^H A.

pinv(y[, damp])

(A^H A + damp I)^-1 A^H y, the damped least-squares solution.

to_nonlinear()

The same operator as a NonlinearOperator.

Attributes

H

A^H, from BART's own adjoint constructor.

T

A^T, the adjoint without the conjugation, as conj(A).H.

codim_rank

How many axes the codomain has.

codim_shape

The codomain, under pyxu's name for it; the same as oshape.

codim_size

How many elements the codomain holds.

device

dim_rank

How many axes the domain has.

dim_shape

The domain, under pyxu's name for it; the same as ishape.

dim_size

How many elements the domain holds.

ishape

oshape