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 中引入

张量约束

  • InputTensorOutputScaleTensorOutputTensorOutputZeroPointTensor 必须具有相同的 DimensionCount
  • OutputTensorOutputZeroPointTensor 必须具有相同 的数据类型

张量支持

种类 支持的维度计数 支持的数据类型
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

另请参阅