class

InstanceNorm3d

extends_InstanceNormBase
InstanceNorm3d(num_features: int, eps: float = 1e-05, momentum: float = 0.1, affine: bool = False, track_running_stats: bool = False, device: DeviceLike = None, dtype: DTypeLike = None)
source

Instance normalization for 5-D input (N, C, D, H, W).

Normalises each (n, c) slice over the three spatial dimensions D×H×WD \times H \times W independently:

yn,c=xn,cμn,cσn,c2+εγc+βcy_{n,c} = \frac{x_{n,c} - \mu_{n,c}} {\sqrt{\sigma_{n,c}^2 + \varepsilon}} \cdot \gamma_c + \beta_c

where μn,c\mu_{n,c} and σn,c2\sigma_{n,c}^2 are computed over the D×H×WD \times H \times W voxels of sample nn, channel cc.

Applicable to volumetric data such as 3-D medical images or spatio-temporal video features, where per-sample independence is important and batch-level statistics are undesirable.

Parameters

num_featuresint
Number of feature channels CC.
epsfloat= 1e-05
Numerical stability constant. Default: 1e-5.
momentumfloat= 0.1
EMA factor for optional running stats. Default: 0.1.
affinebool= False
If True, learns per-channel γ\gamma and β\beta. Default: False.
track_running_statsbool= False
If True, maintains running mean/variance buffers. Default: False.
deviceDeviceLike= None
Device for parameters/buffers. Default: None.
dtypeDTypeLike= None
Data type for parameters/buffers. Default: None.

Attributes

weightParameter or None
Per-channel scale γ\gamma, shape (num_features,). None when affine=False.
biasParameter or None
Per-channel shift β\beta, shape (num_features,). None when affine=False.
running_meanTensor or None
Running mean per channel, shape (num_features,). None when track_running_stats=False.
running_varTensor or None
Running variance per channel, shape (num_features,). None when track_running_stats=False.

Notes

  • Input: (N,C,D,H,W)(N, C, D, H, W)
  • Output: (N,C,D,H,W)(N, C, D, H, W) — same shape.

Examples

3-D volumetric feature maps:
>>> import lucid
>>> import lucid.nn as nn
>>> norm = nn.InstanceNorm3d(16)
>>> x = lucid.randn(2, 16, 8, 32, 32)   # (N, C, D, H, W)
>>> out = norm(x)
>>> out.shape
(2, 16, 8, 32, 32)
Enable running stats for a test-time normalization baseline:
>>> norm_track = nn.InstanceNorm3d(16, track_running_stats=True)
>>> out2 = norm_track(x)
>>> out2.shape
(2, 16, 8, 32, 32)