class
BatchNorm1d
extends
_BatchNormBaseBatchNorm1d(num_features: int, eps: float = 1e-05, momentum: float | None = 0.1, affine: bool = True, track_running_stats: bool = True, device: DeviceLike = None, dtype: DTypeLike = None)Batch normalization over a 2-D or 3-D input (N, C) or (N, C, L).
Normalises each channel across the batch (and, for 3-D inputs, the length) dimension:
For a 3-D input , the statistics and are computed over the axes for each channel . For a 2-D input only the batch axis is reduced.
During training, batch statistics are used and running statistics are updated via an exponential moving average:
During evaluation (model.eval()), the stored
running_mean and running_var are used instead, making
inference independent of batch composition.
Parameters
num_featuresintNumber of channels .
epsfloat= 1e-05Small constant added to the variance for numerical stability.
Default:
1e-5.momentumfloat or None= 0.1Exponential moving average factor for running statistics.
None uses a cumulative moving average. Default: 0.1.affinebool= TrueIf
True, learns per-channel scale and shift
. Default: True.track_running_statsbool= TrueIf
True, maintains running_mean, running_var,
and num_batches_tracked. Default: True.deviceDeviceLike= NoneDevice for parameters and buffers. Default:
None.dtypeDTypeLike= NoneData type for parameters and buffers. Default:
None.Attributes
weightParameter or NoneLearnable scale of shape
(num_features,).
None when affine=False.biasParameter or NoneLearnable shift of shape
(num_features,).
None when affine=False.running_meanTensor or NoneRunning per-channel mean, shape
(num_features,).
None when track_running_stats=False.running_varTensor or NoneRunning per-channel variance, shape
(num_features,).
None when track_running_stats=False.num_batches_trackedTensor or NoneScalar
int64 counting batches seen during training.
None when track_running_stats=False.Notes
- Input: or
- Output: same shape as the input.
Examples
2-D input (e.g. a linear layer's activations):
>>> import lucid
>>> import lucid.nn as nn
>>> bn = nn.BatchNorm1d(128)
>>> x = lucid.randn(32, 128)
>>> out = bn(x)
>>> out.shape
(32, 128)
3-D input — temporal sequence with channels:
>>> bn_seq = nn.BatchNorm1d(64)
>>> x_seq = lucid.randn(16, 64, 200) # (N, C, L)
>>> out_seq = bn_seq(x_seq)
>>> out_seq.shape
(16, 64, 200)