StructuredRandom#
- class deepinv.physics.StructuredRandom(input_shape, output_shape, n_layers=1, transform_func=<function dst1>, transform_func_inv=<function dst1>, diagonals=None, device='cpu', rng: ~torch._C.Generator | None = None, **kwargs)[source]#
Bases:
LinearPhysics
Structured random linear operator model corresponding to the operator
\[A(x) = \prod_{i=1}^N (F D_i) x,\]where \(F\) is a matrix representing a structured transform, \(D_i\) are diagonal matrices, and \(N\) refers to the number of layers. It is also possible to replace \(x\) with \(Fx\) as an additional 0.5 layer.
- Parameters:
input_shape (tuple) – input shape. If (C, H, W), i.e., the input is a 2D signal with C channels, then zero-padding will be used for oversampling and cropping will be used for undersampling.
output_shape (tuple) – shape of outputs.
n_layers (float) – number of layers \(N\). If
layers=N + 0.5
, a first :math`F` transform is included, ie \(A(x)=|\prod_{i=1}^N (F D_i) F x|^2\). Default is 1.transform_func (function) – structured transform function. Default is
deepinv.physics.structured_random.dst1()
.transform_func_inv (function) – structured inverse transform function. Default is
deepinv.physics.structured_random.dst1()
.diagonals (list) – list of diagonal matrices. If None, a random \({-1,+1}\) mask matrix will be used. Default is None.
device (str) – device of the physics. Default is ‘cpu’.
rng (torch.Generator) – Random number generator. Default is None.