昇腾社区首页
中文
注册
开发者
下载

aclnnBatchNormGatherStatsWithCounts

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:

    收集所有device的均值和方差,更新全局的均值和标准差的倒数。BatchNorm的性能和BatchSize相关,BatchSize越大,BatchNorm的统计量也会越准。然而像检测这样的任务,占用显存较高,一张显卡往往只使用较少的图片,比如两张来训练,这就导致BatchNorm的表现变差。一个解决方式就是SyncBatchNorm,所有卡共享同一个BatchNorm,得到全局的统计量。

    aclnnBatchNormGatherStatsWithCounts计算时,依赖计算单卡数据的均值和标准差的倒数。

    [object Object]
  • 计算公式:

    y=(xE[x])Var(x)+epsγ+βy = \frac{(x-E[x])}{\sqrt{Var(x)+ eps}} * γ + β

    其中,runningMean和runningVar更新公式如下:

    runningMean=runningMean(1momentum)+E[x]momentumrunningMean=runningMean*(1-momentum) + E[x]*momentum runningVar=runningVar(1momentum)+E[x]momentumrunningVar=runningVar*(1-momentum) + E[x]*momentum

函数原型

每个算子分为,必须先调用“aclnnBatchNormGatherStatsWithCountsGetWorkspaceSize”接口获取入参并根据流程计算所需workspace大小,再调用“aclnnBatchNormGatherStatsWithCounts”接口执行计算。

[object Object]
[object Object]

aclnnBatchNormGatherStatsWithCountsGetWorkspaceSize

  • 参数说明:

    [object Object]
    • [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:参数[object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object]的数据类型不支持BFLOAT16。
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclnnBatchNormGatherStatsWithCounts

  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

约束说明

  • 确定性计算:
    • aclnnBatchNormGatherStatsWithCounts默认确定性实现。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]