| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |
SyncBatchNormGatherStatsFused
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:SyncBatchNormGatherStatsFused算子用于计算在BatchNormTraining过程中的全局的均值和全局标准差倒数,以及更新全局方差。
-
计算公式:
countsSum=∑n=0N−1counts[n]countsSum = \sum_{n=0}^{N-1} counts[n]
var[n,c]=1invstd[n,c]2−epsvar[n,c] = \frac{1}{invstd[n,c]^2} - eps
meanDiff[n,c]=mean[n,c]−meanAll[c]meanDiff[n,c] = mean[n,c] - meanAll[c]
varSum[c]=∑n=0N−1(var[n,c]+meanDiff[n,c]2)×counts[n]varSum[c] = \sum_{n=0}^{N-1} (var[n,c] + meanDiff[n,c]^2) \times counts[n]
unbiasedVar[c]=varSum[c]countsSum−1unbiasedVar[c] = \frac{varSum[c]}{countsSum - 1}
meanAll[c]=∑n=0N−1mean[n,c]×counts[n]countsSummeanAll[c] = \frac{\sum_{n=0}^{N-1} mean[n,c] \times counts[n]}{countsSum}
invstdAll[c]=1varSum[c]countsSum+epsinvstdAll[c] = \frac{1}{\sqrt{\frac{varSum[c]}{countsSum} + eps}}
runningMeanOut[c]=(1−momentum)×runningMean[c]+momentum×meanAll[c]runningMeanOut[c] = (1 - momentum) \times runningMean[c] + momentum \times meanAll[c]
runningVarOut[c]=(1−momentum)×runningVar[c]+momentum×unbiasedVar[c]runningVarOut[c] = (1 - momentum) \times runningVar[c] + momentum \times unbiasedVar[c]
公式中的n为首轴,c为尾轴。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| mean | 输入 | 表示输入数据均值,对应公式中的`mean`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| invstd | 输入 | 表示输入数据标准差倒数,对应公式中的`invstd`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| runningMean | 输入 | 表示计算过程中的均值,对应公式中的`runningMean`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| runningVar | 输入 | 表示计算过程中的方差,对应公式中的`runningVar`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| counts | 输入 | 表示输入数据元素的个数,对应公式中的`counts`。 | FLOAT32 | ND |
| momentum | 可选属性 | runningVar的指数平滑参数,默认值0.01。 | FLOAT32 | - |
| eps | 属性 | 表示添加到方差中的值,以避免出现除以零的情况。对应公式中的`eps` | FLOAT32 | - |
| meanAll | 输出 | 表示所有卡上数据的均值,对应公式中的`meanAll`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| invstdAll | 输出 | 表示所有卡上数据的标准差的倒数,对应公式中的`invstdAll`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| runningMeanOut | 输出 | 更新后的均值,对应公式中的`runningMeanOut`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| runningVarOut | 输出 | 更新后的方差,对应公式中的`runningVarOut`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_BatchNormGatherStatsWithCounts | 通过aclnnBatchNormGatherStatsWithCounts接口方式调用SyncBatchNormGatherStatsFused算子。 |