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执行量化。
-
计算公式:
-
反量化计算:
x′=(x−inputZeroPoint)∗inputScalex' = (x - inputZeroPoint) * inputScale
-
归一化计算:
y=x′−meanvar+ϵ∗γ+βy =\frac{x' - mean}{\sqrt{var + ϵ}} * γ + β
-
量化计算:
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算子。 |