mrpro.operators.functionals.L1NormViewAsReal
- class mrpro.operators.functionals.L1NormViewAsReal(target: Tensor | None | complex = None, weight: Tensor | complex = 1.0, dim: int | Sequence[int] | None = None, divide_by_n: bool = False, keepdim: bool = False)[source]
Bases:
ElementaryProximableFunctional
Functional class for the L1 Norm, where C is identified with R^2.
This implements the functional given by \(f: C^N -> [0, \infty), x -> \|W_r * Re(x-b) )\|_1 + \|( W_i * Im(x-b) )\|_1\) where \(W_r\) and \(W_i\) are a either scalars or tensors and * denotes element-wise multiplication.
If the parameter weight is real-valued, \(W_r\) and \(W_i\) are both set to weight. If it is complex-valued, \(W_r\) and \(W_I\) are set to the real and imaginary part, respectively.
In most cases, consider setting divide_by_n to true to be independent of input size.
The norm of the vector is computed along the dimensions set at initialization.
- __init__(target: Tensor | None | complex = None, weight: Tensor | complex = 1.0, dim: int | Sequence[int] | None = None, divide_by_n: bool = False, keepdim: bool = False) None
Initialize a Functional.
We assume that functionals are given in the form \(f(x) = \phi ( weight ( x - target))\) for some functional \(\phi\).
- Parameters:
target – target element - often data tensor (see above)
weight – weight parameter (see above)
dim – dimension(s) over which functional is reduced. All other dimensions of weight ( x - target) will be treated as batch dimensions.
divide_by_n – if true, the result is scaled by the number of elements of the dimensions index by dim in the tensor weight ( x - target). If true, the functional is thus calculated as the mean, else the sum.
keepdim – if true, the dimension(s) of the input indexed by dim are maintained and collapsed to singeltons, else they are removed from the result.
- forward(x: Tensor) tuple[Tensor] [source]
Forward method.
Compute the L1-norm of the input with C identified as R^2.
- Parameters:
x – input tensor
- Return type:
L1 norm of the input tensor, where C is identified as R^2
- prox(x: Tensor, sigma: Tensor | float = 1.0) tuple[Tensor] [source]
Proximal Mapping of the L1 Norm.
Apply the proximal mapping of the L1-norm with C identified as R^2.
- Parameters:
x – input tensor
sigma – real valued positive scaling factor
- Return type:
Proximal mapping applied to the input tensor
- prox_convex_conj(x: Tensor, sigma: Tensor | float = 1.0) tuple[Tensor]
Apply proximal operator of convex conjugate of functional.
Yields \(prox_{\sigma f^*}(x) = argmin_{p} (\sigma f^*(p) + 1/2 \|x-p\|^{2}\), where \(f^*\) denotes the convex conjugate of \(f\), given \(x\) and \(\sigma\).
- Parameters:
x – input tensor
sigma – scaling factor, must be positive
- Return type:
Proximal operator of the convex conjugate applied to the input tensor