Diagonal & Scalar
torchlinops.linops.Diagonal
Bases: NamedLinop
Elementwise diagonal linear operator \(D(x) = w \odot x\).
The forward operation is pointwise multiplication by a weight tensor w. The adjoint is \(D^H(x) = \bar{w} \odot x\) and the normal is \(D^N(x) = |w|^2 \odot x\).
Because the input and output shapes are identical, Diagonal sets
oshape = ishape and keeps them synchronized.
| ATTRIBUTE | DESCRIPTION |
|---|---|
weight |
The diagonal weight tensor \(w\).
TYPE:
|
broadcast_dims |
Dimensions along which the weight is broadcast (not stored explicitly).
TYPE:
|
Source code in src/torchlinops/linops/diagonal.py
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | |
__init__
__init__(
weight: Tensor,
ioshape: Optional[Shape] = None,
broadcast_dims: Optional[Shape] = None,
)
| PARAMETER | DESCRIPTION |
|---|---|
weight
|
The diagonal weight tensor.
TYPE:
|
ioshape
|
Named dimensions for input and output (they are the same).
TYPE:
|
broadcast_dims
|
Dimensions along which weight should be broadcast rather than indexed. Useful when the weight has fewer dimensions than the input.
TYPE:
|
Source code in src/torchlinops/linops/diagonal.py
from_weight
classmethod
from_weight(
weight: Tensor,
weight_shape: Shape,
ioshape: Shape,
shape_kwargs: Optional[dict] = None,
)
Construct a Diagonal by expanding weight to match ioshape via einops.
| PARAMETER | DESCRIPTION |
|---|---|
weight
|
The weight tensor in its original (possibly lower-dimensional) shape.
TYPE:
|
weight_shape
|
Named dimensions labeling the axes of weight.
TYPE:
|
ioshape
|
Target named dimensions for the expanded weight.
TYPE:
|
shape_kwargs
|
Extra keyword arguments forwarded to
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Diagonal
|
A new diagonal linop with the expanded weight. |
Source code in src/torchlinops/linops/diagonal.py
normal
torchlinops.linops.Scalar
Bases: Diagonal
Scalar multiplication operator \(S(x) = \alpha x\).
A special case of Diagonal where the weight is a scalar, making it
trivially splittable (the same scalar applies to every tile).
Source code in src/torchlinops/linops/scalar.py
__init__
| PARAMETER | DESCRIPTION |
|---|---|
weight
|
The scalar multiplier \(\alpha\).
TYPE:
|
ioshape
|
Named dimensions (same for input and output).
TYPE:
|
Source code in src/torchlinops/linops/scalar.py
torchlinops.linops.Zero
Bases: NamedLinop
Zero operator \(0(x) = 0\).
Always returns a zero tensor with the same shape as the input.