文件最后提交记录最后更新时间
1 个月前
15 天前
15 天前
15 天前
15 天前
7 个月前
24 天前
README

QuantizedBatchNorm

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×
Kirin X90 处理器系列产品
Kirin 9030 处理器系列产品

功能说明

  • 算子功能:将输入Tensor执行一个反量化的计算,再根据输入的weight、bias、epsilon执行归一化,最后根据输出的outputScale以及outputZeroPoint执行量化。

  • 计算公式:

    1. 反量化计算:

      x′=(x−inputZeroPoint)∗inputScalex' = (x - inputZeroPoint) * inputScale

    2. 归一化计算:

      y=x′−meanvar+ϵ∗γ+βy =\frac{x' - mean}{\sqrt{var + ϵ}} * γ + β

    3. 量化计算:

      out=round(youtputScale+outputZeroPoint)out = round(\frac{y}{outputScale} + outputZeroPoint)

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 模型输入的量化后的数据,对应公式中的`x`。 INT8、UINT8、INT32 NCHW
mean 输入 模型输入数据的均值,对应公式中的`mean`。shape维度限制为1维,长度需与输入NCHW中的C相同。 FLOAT32 ND
var 输入 模型输入数据的方差,对应公式中的`var`。shape维度限制为1维,长度需与输入NCHW中的C相同。 FLOAT32 ND
input_scale 输入 输入标量,模型输入数据的缩放系数,对应公式中的`inputScale`。 FLOAT32 ND
input_zero_point 输入 输入标量,模型输入数据的偏置,对应公式中的`inputZeroPoint`。传入值不能超过input对应数据类型的上下边界,例如INT8上下边界为[-128,127]。 INT32 ND
output_scale 输入 输入标量,模型输出数据的缩放系数,对应公式中的`outputScale`。 FLOAT32 ND
output_zero_point 输入 输入标量,模型输出数据的偏置,对应公式中的`outputZeroPoint`。传入值不能超过input对应数据类型的上下边界,例如INT8上下边界为[-128,127]。 INT32 ND
weight 输入 进行批量归一化的权重,对应公式中的`γ`。shape维度限制为1维,长度需与输入参数input的数据格式NCHW中的C相同。 FLOAT32 ND
bias 输入 进行批量归一化的偏置值,对应公式中的`β`。shape维度限制为1维,长度需与输入NCHW中的C相同。 FLOAT32 ND
epsilon 可选属性
  • 添加到方差中的小值以避免除以零,对应公式中的`ε`。
  • 默认值为空。
FLOAT32 -
y 输出 模型输出的量化后的数据,对应公式中的`out`。数据类型、数据格式、shape与输入`x`保持一致。 INT8、UINT8、INT32 NCHW

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_quantized_batch_norm 通过aclnnQuantizedBatchNorm接口方式调用QuantizedBatchNorm算子。