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的較低維度。 這個值也會決定 Strides、Dilations、StartPadding和 EndPadding 陣列的大小。 僅支援 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
要將卷積作業分割成的群組數目。
可用性
此運算子是在 DML_FEATURE_LEVEL_2_1
中引進的。
Tensor 條件約束
- BiasTensor、FilterTensor、InputTensor和 OutputTensor 必須具有相同 的 DimensionCount。
- OutputTensor 和 OutputZeroPointTensor 必須具有相同的 DataType 。
- InputTensor 和 InputZeroPointTensor 必須具有相同的 DataType 。
- FilterTensor 和 FilterZeroPointTensor 必須具有相同的 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 |