DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC结构(directml.h)

使用 InputTensor执行 FilterTensor 的卷积。 此运算符对量化数据执行转发卷积。 此运算符在数学上等效于取消输入的量化、卷积,然后量化输出。

此运算符使用的量子化线性函数是线性量化函数

Dequantize 函数

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Quantize 函数

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

语法

struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputScaleTensor;
  const DML_TENSOR_DESC *InputZeroPointTensor;
  const DML_TENSOR_DESC *FilterTensor;
  const DML_TENSOR_DESC *FilterScaleTensor;
  const DML_TENSOR_DESC *FilterZeroPointTensor;
  const DML_TENSOR_DESC *BiasTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *Dilations;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  UINT                  GroupCount;
};

成员

InputTensor

类型:const DML_TENSOR_DESC*

包含输入数据的张量。 InputTensor 的预期维度 { InputBatchCount, InputChannelCount, InputHeight, InputWidth }

InputScaleTensor

类型:const DML_TENSOR_DESC*

包含输入刻度数据的张量。 InputScaleTensor 的预期维度 { 1, 1, 1, 1 }。 此缩放值用于取消输入值的量化。

注意

小数位数值为 0 会导致未定义的行为。

InputZeroPointTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

包含输入零点数据的可选张量。 InputZeroPointTensor 的预期维度 { 1, 1, 1, 1 }。 此零点值用于取消输入值的量化。

FilterTensor

类型:const DML_TENSOR_DESC*

包含筛选器数据的张量。 FilterTensor 的预期维度 { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }

FilterScaleTensor

类型:const DML_TENSOR_DESC*

包含筛选器缩放数据的张量。 如果需要每个张量量子化,则 FilterScaleTensor 的预期维度 { 1, 1, 1, 1 };如果需要每个通道量子化,则 { 1, OutputChannelCount, 1, 1 }。 此缩放值用于取消筛选值的量化。

注意

小数位数值为 0 会导致未定义的行为。

FilterZeroPointTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

包含筛选器零点数据的可选张量。 如果需要每个张量量子化,FilterZeroPointTensor 的预期维度 { 1, 1, 1, 1 };如果需要每个通道量子化,则 { 1, OutputChannelCount, 1, 1 }。 此零点值用于取消筛选值的量化。

BiasTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

包含偏差数据的张量。 偏差张量是一个张量,其中包含在卷积末尾的输出张量中广播的数据,该卷积添加到结果中。 BiasTensor 的预期维度 { 1, OutputChannelCount, 1, 1 } 4D。

OutputScaleTensor

类型:const DML_TENSOR_DESC*

包含输出缩放数据的张量。 OutputScaleTensor 的预期维度 { 1, 1, 1, 1 }。 此输入刻度值用于量化卷积输出值。

注意

小数位数值为 0 会导致未定义的行为。

OutputZeroPointTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

包含筛选器零点数据的可选张量。 OutputZeroPointTensor 的预期维度 { 1, 1, 1, 1 }。 此输入零点值用于量化输出值的卷积。

OutputTensor

类型:const DML_TENSOR_DESC*

要向其写入结果的张量。 OutputTensor 的预期维度 { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }

DimensionCount

类型:UINT

卷积操作的空间维度数。 空间维度是卷积筛选器张量 FilterTensor的较低维度。 此值还确定 StridesDilationsStartPaddingEndPadding 数组的大小。 仅支持值 2。

Strides

类型:_Field_size_(DimensionCount) const UINT*

卷积运算的步幅。 这些步幅应用于卷积筛选器。 它们与 DML_TENSOR_DESC中包含的张量步幅分开。

Dilations

类型:_Field_size_(DimensionCount) const UINT*

卷积运算的 Dilations。 分步应用于筛选器内核的元素。 这可以通过用零填充内部筛选器内核元素来模拟更大的筛选器内核。

StartPadding

类型:_Field_size_(DimensionCount) const UINT*

要应用于筛选器的每个空间维度的开头和卷积运算的输入张量的填充值。

EndPadding

类型:_Field_size_(DimensionCount) const UINT*

要应用于筛选器的每个空间维度末尾的填充值和卷积运算的输入张量。

GroupCount

类型:UINT

要将卷积运算划分为的组数。 GroupCount 可以通过将 Group Count 设置为等于输入通道计数来实现深度卷积。 这会将卷积划分为每个输入通道的单独卷积。

可用性

此运算符是在 DML_FEATURE_LEVEL_2_1中引入的。

Tensor 约束

  • BiasTensorFilterTensorInputTensorOutputTensor 必须具有相同 DimensionCount
  • OutputTensorOutputZeroPointTensor 必须具有相同的 DataType
  • InputTensorInputZeroPointTensor 必须具有相同 DataType
  • FilterTensorFilterZeroPointTensor 必须具有相同的 dataType

Tensor 支持

DML_FEATURE_LEVEL_5_2及更高版本

张肌 支持的维度计数 支持的数据类型
InputTensor 输入 3 到 4 INT8、UINT8
InputScaleTensor 输入 1 到 4 FLOAT32
InputZeroPointTensor 可选输入 1 到 4 INT8、UINT8
FilterTensor 输入 3 到 4 INT8、UINT8
FilterScaleTensor 输入 1 到 4 FLOAT32
FilterZeroPointTensor 可选输入 1 到 4 INT8、UINT8
BiasTensor 可选输入 3 到 4 INT32
OutputScaleTensor 输入 1 到 4 FLOAT32
OutputZeroPointTensor 可选输入 1 到 4 INT8、UINT8
OutputTensor 输出 3 到 4 INT8、UINT8

DML_FEATURE_LEVEL_4_0及更高版本

张肌 支持的维度计数 支持的数据类型
InputTensor 输入 3 到 4 INT8、UINT8
InputScaleTensor 输入 1 到 4 FLOAT32
InputZeroPointTensor 可选输入 1 到 4 INT8、UINT8
FilterTensor 输入 3 到 4 INT8、UINT8
FilterScaleTensor 输入 3 到 4 FLOAT32
FilterZeroPointTensor 可选输入 1 到 4 INT8、UINT8
BiasTensor 可选输入 3 到 4 INT32
OutputScaleTensor 输入 1 到 4 FLOAT32
OutputZeroPointTensor 可选输入 1 到 4 INT8、UINT8
OutputTensor 输出 3 到 4 INT8、UINT8

DML_FEATURE_LEVEL_2_1及更高版本

张肌 支持的维度计数 支持的数据类型
InputTensor 输入 4 INT8、UINT8
InputScaleTensor 输入 4 FLOAT32
InputZeroPointTensor 可选输入 4 INT8、UINT8
FilterTensor 输入 4 INT8、UINT8
FilterScaleTensor 输入 4 FLOAT32
FilterZeroPointTensor 可选输入 4 INT8、UINT8
BiasTensor 可选输入 4 INT32
OutputScaleTensor 输入 4 FLOAT32
OutputZeroPointTensor 可选输入 4 INT8、UINT8
OutputTensor 输出 4 INT8、UINT8

要求

要求 价值
最低支持的客户端 Windows 10 内部版本 20348
支持的最低服务器 Windows 10 内部版本 20348
标头 directml.h