mindspore.mint.nn.SyncBatchNorm
- class mindspore.mint.nn.SyncBatchNorm(num_features, eps=1e-5, momentum=0.1, affine=True, track_running_stats=True, process_groups=None, dtype=None)[源代码]
在N维输入上进行跨设备同步批归一化(Batch Normalization,BN)。
同步BN是跨设备的。BN的实现仅对每个设备中的数据进行归一化。同步BN将归一化组内的输入。描述见论文 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 。使用mini-batch数据和和学习参数进行训练,参数见如下公式。
\[y = \frac{x - \mathrm{E}[x]}{\sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta\]警告
这是一个实验性API,后续可能修改或删除。
- 参数:
num_features (int) - 指定输入Tensor的通道数量,输入Tensor的size为 \((N, C, +)\) 。
eps (float) - \(\epsilon\) 添加到分母中的值,以确保数值稳定。默认值:
1e-5
。momentum (float) - 动态均值和动态方差所使用的动量。默认值:
0.1
。affine (bool) - bool类型。设置为True时, \(\gamma\) 和 \(\beta\) 为可学习参数。默认值:
True
。track_running_stats (bool, 可选) - bool类型。设置为
True
时,会跟踪运行时的均值和方差。当设置为False
时, 则不会跟踪这些统计信息。且在tran和eval模式下,该cell总是使用batch的统计信息。process_groups (
mindspore.communication._comm_helper.GlobalComm
, 可选) - 统计数据的同步在每个进程组 内单独进行。默认行为是全球同步。dtype (
mindspore.dtype
, 可选) - Parameters的dtype。默认值:None
。
- 输入:
x (Tensor) - shape为 \((N, C_{in}, +)\) 的Tensor。
- 输出:
Tensor,归一化后的Tensor,shape为 \((N, C_{out}, +)\) 。
- 异常:
TypeError - num_features 不是int。
TypeError - eps 不是float。
TypeError - process_groups 不是list。
ValueError - num_features 小于1。
ValueError - momentum 不在范围[0, 1]内。
ValueError - process_groups 中的rank ID不在[0, rank_size)范围内。
- 支持平台:
Ascend