RevIN#

class sdm.nn.RevIN(affine_channels: int | None = None, eps: float = 1e-05, device: device | str | None = None, dtype: dtype | None = None)#

Bases: Module

Reversible instance normalization from the “Reversible Instance Normalization for Accurate Time-Series Forecasting against Distribution Shift” paper.

Parameters:
  • affine_channels (int | None) – The number of channels for learned affine parameters. If None, no affine transformation is applied.

  • eps (float) – The value added to the supplied scale for numerical stability.

  • device (device | str | None) – The device.

  • dtype (dtype | None) – The dtype.

compute_stats(x: Tensor, mask: Tensor | None = None) → tuple[Tensor, Tensor]#

Compute mean and standard deviation over the final dimension.

NaNs and masked values are excluded.

Parameters:
  • x (Tensor) – Tensor with shape [..., C, R].

  • mask (Tensor | None) – Boolean observed-value mask with shape [..., C, R].

Returns:

Mean and standard deviation with shape [..., C, 1].

Return type:

tuple[Tensor, Tensor]

forward(x: Tensor, mean: Tensor, scale: Tensor) → Tensor#

The forward pass.

Parameters:
  • x (Tensor) – Tensor with shape [..., C, R].

  • mean (Tensor) – The mean with shape [..., C, 1].

  • scale (Tensor) – The scale with shape [..., C, 1].

Return type:

Tensor

inverse(x: Tensor, mean: Tensor, scale: Tensor) → Tensor#

Invert the forward pass.

Parameters:
  • x (Tensor) – Normalized values or forecasts. With affine parameters, shape

  • x – Tensor with shape [..., C, R].

  • mean (Tensor) – The mean with shape [..., C, 1].

  • scale (Tensor) – The scale with shape [..., C, 1].

Return type:

Tensor