DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC 结构 (directml.h)
计算量化 InputTensor 所需的量化小数位数和零点值,然后应用该量化,将结果写入 OutputTensor。
此运算符使用以下公式进行量化。
InputMax = Max(InputTensor)
InputMin = Min(InputTensor)
AValue = (A - AZeroPoint) * AScale
BValue = (B - BZeroPoint) * BScale
// For uint8 output, Min = 0, Max = 255
// For int8 output, Min = -128, Max = 127
OutputScale = (InputMax – InputMin) / (Max – Min)
OutputZeroPoint = Min - InputMin / OutputScale
OutputTensor = clamp(round(InputValue / OutputScale) + OutputZeroPoint, Min, Max)
语法
struct DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
};
成员
InputTensor
类型: const DML_TENSOR_DESC*
包含输入的张量。
OutputTensor
类型: const DML_TENSOR_DESC*
要写入结果的输出张量。
OutputScaleTensor
类型: const DML_TENSOR_DESC*
要写入 OutputTensor 的输出比例系数的输出张量。 OutputScaleTensor 中预期的元素数为 1。
OutputZeroPointTensor
类型: const DML_TENSOR_DESC*
要写入 OutputTensor 的输出零点的输出张量。 OutputZeroPointTensor 中预期的元素数为 1。
注解
可用性
此运算符是在 DML_FEATURE_LEVEL_4_0 中引入 的。
张量约束
- InputTensor、 OutputScaleTensor、 OutputTensor 和 OutputZeroPointTensor 必须具有相同的 DimensionCount。
- OutputTensor 和 OutputZeroPointTensor 必须具有相同 的数据类型。
张量支持
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 1 到 8 | INT8、UINT8 |
OutputScaleTensor | 输出 | 1 到 8 | FLOAT32 |
OutputZeroPointTensor | 输出 | 1 到 8 | INT8、UINT8 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 内部版本 22000 |
最低受支持的服务器 | Windows 内部版本 22000 |
标头 | directml.h |