VirtualLinearPhysics#
- class deepinv.physics.VirtualLinearPhysics(*, physics, transform, g_params)[source]#
Bases:
LinearPhysicsVirtual linear operator
A virtual operator is an operator of the form
\[A = \tilde{A} T_g\]where \(\tilde{A}\) is a linear operator and \(T_g\) is an invertible transformation with parameters \(g\).
Unlike general composition of linear operators, like for
deepinv.physics.ComposedLinearPhysics, the invertibility of \(T_g\) allows to compute the pseudo-inverse of \(A\) in a computationally efficient closed form, i.e.,\[A^\dagger = T_g^{-1} \tilde{A}^\dagger.\]Virtual operators are used in
deepinv.models.EquivariantReconstructor. For more details, see Sechaud et al.[1].Warning
The adjoint and pseudo-inverse might be incorrect if the transformation is not invertible, for instance due to boundary effects.
- Parameters:
physics (LinearPhysics) – linear physics operator \(\tilde{A}\).
transform (Transform) – transformation \(T_g\)
g_params (dict) – parameters of the transformation \(g\).
- References:
- A(x, **kwargs)[source]#
Apply the virtual operator to an input
- Parameters:
x (torch.Tensor) – input image.
- Returns:
(
torch.Tensor) output of the virtual operator.- Return type:
- A_adjoint(y, **kwargs)[source]#
Apply the adjoint of the virtual operator to an input
- Parameters:
y (torch.Tensor) – input measurement.
- Returns:
(
torch.Tensor) output of the adjoint of the virtual operator.- Return type:
- A_dagger(y, **kwargs)[source]#
Apply the pseudo-inverse of the virtual operator to an input
- Parameters:
y (torch.Tensor) – input measurement.
- Returns:
(
torch.Tensor) output of the pseudo-inverse of the virtual operator.- Return type:
Examples using VirtualLinearPhysics:#
Self-supervised learning with Equivariant Splitting