bartorch.linop.Sum#
- class bartorch.linop.Sum(shape, axes)#
Sum over
axes, BART’slinop_sum.The summed axes are kept with size one rather than dropped, which is what BART does and what lets the result broadcast back against the input. Its adjoint is
Repeat.BART attaches a closed-form pseudo-inverse to this operator, but the routine is written for
ScaledSumand answers for that scaling instead, sopinv()takes the solver here. UseScaledSumwhere the exact inverse matters.- Parameters:
shape (tuple of int) – The shape it sums over, C order.
axes (int or tuple of int) – Which axes to sum, as indices into
shape.
- __init__(shape, axes)#
Methods
A(x, **kwargs)A x, underdeepinv's name.A_adjoint(y, **kwargs)A^H y, underdeepinv's name, recorded for autograd.A_adjoint_A(x, **kwargs)A^H A x, underdeepinv's name, recorded for autograd.A_dagger(y, **kwargs)The pseudo-inverse, under
deepinv's name.__init__(shape, axes)adjoint(y[, out])A^H y, without recording for autograd.cogram()A A^Has an operator.conj()conj(A): conjugate the input, apply, conjugate the output.forward(x[, out])A x, without recording for autograd.gram()A^H Aas 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
HA^H, from BART's own adjoint constructor.TA^T, the adjoint without the conjugation, asconj(A).H.codim_rankHow many axes the codomain has.
codim_shapeThe codomain, under pyxu's name for it; the same as
oshape.codim_sizeHow many elements the codomain holds.
devicedim_rankHow many axes the domain has.
dim_shapeThe domain, under pyxu's name for it; the same as
ishape.dim_sizeHow many elements the domain holds.
ishapeoshape