BatchNormalizationGrad
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
算子功能:完成 BatchNormalization 反向梯度计算。
计算公式:
$$ grad_input = \frac{weight \cdot save_invstd}{\sqrt{m}} \cdot (m \cdot grad_output - sum(grad_output) - xhat \cdot sum(grad_output \cdot xhat)) $$
$$ grad_weight = sum(grad_output \cdot xhat) $$
$$ grad_bias = sum(grad_output) $$
其中 $xhat = (input - save_mean) \cdot save_invstd$,$m = N \times H \times W \times ...$(每个通道的元素数)。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| grad_output | 输入 | 反向传播输入的梯度。 | FLOAT、FLOAT16 | ND |
| input | 输入 | 前向传播的输入特征图。 | FLOAT、FLOAT16 | ND |
| weight | 输入 | BN 层的 gamma 权重参数。 | FLOAT、FLOAT16 | ND |
| bias | 输入 | BN 层的 beta 偏置参数(未参与梯度计算,保留接口兼容性)。 | FLOAT、FLOAT16 | ND |
| save_mean | 输入 | 前向传播保存的均值。 | FLOAT、FLOAT16 | ND |
| save_invstd | 输入 | 前向传播保存的标准差倒数。 | FLOAT、FLOAT16 | ND |
| epsilon | 属性 | BN 层 epsilon 参数。默认值为 1e-5。 | FLOAT | - |
| grad_input | 输出 | 输入特征图的梯度。 | FLOAT、FLOAT16 | ND |
| grad_weight | 输出 | 权重参数的梯度。 | FLOAT、FLOAT16 | ND |
| grad_bias | 输出 | 偏置参数的梯度。 | FLOAT、FLOAT16 | ND |
约束说明
- 输入张量维度至少为 2 维(N, C, ...)。
- 支持多核并行计算(按通道维度划分)。
- save_mean、save_invstd、weight、bias、grad_weight、grad_bias 的第一维大小等于通道数 C。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_batch_normalization_grad | 参见算子调用完成算子编译和验证。 |
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考