共用方式為


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*

包含篩選小數字數數據的張量。 如果需要每個 tensor 仲裁,則 FilterScaleTensor 的預期維度會 { 1, 1, 1, 1 },或如果需要每個通道量化,則為 { 1, OutputChannelCount, 1, 1 }。 此小數字數值用於取消量化篩選值。

注意

小數位數 0 會導致未定義的行為。

FilterZeroPointTensor

類型:_Maybenull_ const DML_TENSOR_DESC*

選擇性的張量,其中包含篩選零點數據。 如果需要每個 tensor 仲裁,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