文件最后提交记录最后更新时间
16 天前
9 小时前
16 天前
16 天前
16 天前
15 小时前
1 个月前
1 个月前
README

BatchNorm

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

  • 算子功能:对一个批次的数据做正则化处理,正则化之后生成的数据的统计结果为0均值、1标准差。

  • 计算公式:

    y=(x−E(x))Var(x)+ε∗γ+βy = \frac{(x - E(x))}{\sqrt{Var(x) + ε}} * γ + β

    E(x)表示均值,Var(x)表示方差,均需要在算子内部计算得到;ε表示一个极小的浮点数,防止分母为0的情况。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入
  • 进行批量归一化的输入张量,对应公式中的`x`。
  • shape维度至少是2D。
FLOAT32、FLOAT16、BFLOAT16 NCHW/NHWC/NCDHW/NDHWC/ND
scale 输入
  • 进行批量归一化的权重,对应公式中的`γ`。
  • 一个1D张量,shape与输入x的维度C相同,如果输入x是ND格式,shape与输入x的第2维度相同。
FLOAT32 ND
offset 输入
  • 进行批量归一化的偏置值,对应公式中的`β`。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
mean 可选输入
  • 训练场景:训练期间动量更新前的均值,为可选输入;推理场景:推理期间使用的均值,为必选输入,对应公式中的`E(x)`。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
variance 可选输入
  • 训练场景:训练期间动量更新前的方差,为可选输入;推理场景:推理期间使用的方差,为必选输入,对应公式中的`Var(x)`。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
epsilon 可选属性
  • 添加到方差中的小值以避免除以零,对应公式中的`ε`。
  • 默认值为1e-4f。
FLOAT32 -
data_format 可选属性
  • 指定输入x的数据格式,支持"NHWC"、"NCHW"、"NDHWC"、"NCDHW"。
  • 默认值为"NHWC"。
STRING -
is_training 可选属性
  • 标记是否训练场景,true表示训练场景,false表示推理场景。
  • 默认值为true。
BOOL -
exponential_avg_factor 可选属性
  • 训练期间用于更新动量平均值的因子。
  • 默认值为1.0f。
FLOAT32 -
y 输出
  • 表示批量归一化后的输出结果,对应公式中的`y`。
  • 数据类型、数据格式、shape与输入x保持一致。
FLOAT32、FLOAT16、BFLOAT16 NCHW/NHWC/NCDHW/NDHWC/ND
batch_mean 输出
  • 训练模式:当前批次的均值,推理模式:等于输入mean。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
batch_variance 输出
  • 训练模式:当前批次的方差,推理模式:等于输入variance。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
reserve_space_1 输出
  • 为梯度计算预留。训练模式:等于输出batch_mean,推理模式:等于输入mean。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
reserve_space_2 输出
  • 为梯度计算预留。训练模式:保存inv_var:(1/sqrt(epsilon + variance)),用于反向梯度计算中重用,推理模式:等于输入variance。
  • 一个1D张量,shape与入参scale保持一致。
FLOAT32 ND
reserve_space_3 输出
  • 一个只包含一个元素的一维张量,仅出于与TensorFlow兼容的目的而存在,数据无意义。
  • shape为[1]。
FLOAT32 ND

约束说明

调用说明

调用方式 样例代码 说明
图模式调用 test_geir_batch_norm 通过算子IR构图方式调用BatchNorm算子。