mindscience.e3nn.nn.BatchNorm
- class mindscience.e3nn.nn.BatchNorm(irreps, eps=1e-5, momentum=0.1, affine=True, reduce='mean', instance=False, normalization='component', dtype=mindspore.float32)[源代码]
针对正交归一化群表示的批归一化。 与常规 BatchNorm 不同,本层按不可约表示块的“不变范数”进行归一化,保证在诸如旋转等群作用下的等变性得以保持。统计量按每个重复(multiplicity)块独立计算,保持张量结构不变。 范数仅对正交归一化表示是不变的。不可约表示 wigner_D (及其对应的实基)满足该条件,因此对标准 e3nn 表示是安全的。
- 参数:
irreps (Union[str, Irrep, Irreps]) - 输入的不可约表示。
eps (float,可选) - 归一化方差时避免除以零的值。默认值:
1e-5。momentum (float,可选) - 滑动平均的动量。默认值:
0.1。affine (bool,可选) - 是否包含权重和偏置参数。默认值:
True。reduce (str,可选) - {'mean', 'max'},用于归约的方法。默认值:
'mean'。instance (bool,可选) - 应用实例归一化而不是批归一化。默认值:
False。normalization (str,可选) - {'component', 'norm'},归一化方法。默认值:
'component'。dtype (mindspore.dtype,可选) - 输入张量的类型。默认值:
mindspore.float32。
- 输入:
input (Tensor) - 形状为 \((batch, ..., irreps.dim)\) 的张量。
- 输出:
output (Tensor) - 形状为 \((batch, ..., irreps.dim)\) 的张量。
- 异常:
ValueError: 如果 reduce 不是 'mean' 或 'max'。
ValueError: 如果 normalization 不是 'component' 或 'norm'。
样例:
>>> from mindscience.e3nn.nn import BatchNorm >>> from mindspore import ops, Tensor >>> bn = BatchNorm('3x0o+2x0e+1x0o') >>> print(bn) BatchNorm (3x0o+2x0e+1x0o, eps=1e-05, momentum=0.1) >>> inputs = Tensor(ops.ones((4, 6))) >>> outputs = bn(inputs) >>> print(outputs.shape) (4, 6)