DML_CONVOLUTION_OPERATOR_DESC 結構 (directml.h)
使用 InputTensor 執行 FilterTensor 的卷積。 此運算元支援許多標準卷積組態。 這些標準設定包括轉置 (轉置) 卷積,方法是設定 Direction 和 Mode 欄位,以及藉由設定 GroupCount 欄位來深度卷積。
相關步驟的摘要:對輸出張量執行卷積;將偏差重新調整為與輸出張量相同的維度大小;將重新調整的偏差張量新增至輸出張量。
語法
struct DML_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_CONVOLUTION_MODE Mode;
DML_CONVOLUTION_DIRECTION Direction;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
const UINT *OutputPadding;
UINT GroupCount;
const DML_OPERATOR_DESC *FusedActivation;
};
成員
InputTensor
類型: const DML_TENSOR_DESC*
包含輸入數據的張量。 InputTensor 的預期維度如下:
{ BatchCount, InputChannelCount, InputWidth }
針對 3D,{ BatchCount, InputChannelCount, InputHeight, InputWidth }
適用於 4D 和{ BatchCount, InputChannelCount, InputDepth, InputHeight, InputWidth }
5D。
FilterTensor
類型: const DML_TENSOR_DESC*
包含篩選數據的張量。 FilterTensor 的預期維度如下:
{ FilterBatchCount, FilterChannelCount, FilterWidth }
針對 3D,{ FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
適用於 4D 和{ FilterBatchCount, FilterChannelCount, FilterDepth, FilterHeight, FilterWidth }
5D。
BiasTensor
類型: _Maybenull_ const DML_TENSOR_DESC*
包含偏差數據的選擇性張量。 偏差張量是一個包含數據的數據,其會在捲積結尾的輸出張量上廣播,並新增至結果。 BiasTensor 的預期維度如下:
{ 1, OutputChannelCount, 1 }
針對 3D,{ 1, OutputChannelCount, 1, 1 }
適用於 4D 和{ 1, OutputChannelCount, 1, 1, 1 }
5D。
針對每個輸出通道,該通道的單一偏差值會新增至 OutputTensor 該通道中的每個元素。 也就是說, BiasTensor 會廣播到 OutputTensor 的大小,而運算符傳回的內容是這個廣播 的 BiasTensor 與卷積結果的總和。
OutputTensor
類型: const DML_TENSOR_DESC*
要寫入結果的張量。 OutputTensor 的預期維度如下:
{ BatchCount, OutputChannelCount, OutputWidth }
針對 3D,{ BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
適用於 4D 和{ BatchCount, OutputChannelCount, OutputDepth, OutputHeight, OutputWidth }
5D。
Mode
用於捲積作業的模式。 DML_CONVOLUTION_MODE_CROSS_CORRELATION 是一般推斷案例所需的行為。 相反地, DML_CONVOLUTION_MODE_CONVOLUTION 會沿著每個空間維度翻轉每個篩選核心中的元素順序。
Direction
卷積運算的方向。 DML_CONVOLUTION_DIRECTION_FORWARD 是用於推斷的主要捲積形式,其中在定型期間會使用 DML_CONVOLUTION_DIRECTION_FORWARD 和 DML_CONVOLUTION_DIRECTION_BACKWARD 的組合。
DimensionCount
類型: UINT
卷積作業的空間維度數目。 空間維度是卷積 FilterTensor 的較低維度。 例如,寬度和高度維度是 4D 卷積篩選張量的空間維度。 這個值也會決定 Strides、Dilations、StartPadding、EndPadding 和 OutputPadding 陣列的大小。 當 InputTensor.DimensionCount 為 4 時,它應該設定為 2,當 InputTensor.DimensionCount 為 5 時則設定為 3。
Strides
類型:_Field_size_ (DimensionCount) const UINT*
數位,包含卷積運算的步幅。 這些步幅會套用至卷積篩選。 它們與 DML_TENSOR_DESC中包含的張量步幅不同。
Dilations
類型:_Field_size_ (DimensionCount) const UINT*
數位,包含捲積作業的聽寫。 Dilation 是套用至篩選核心元素的步步。 這會藉由將內部篩選核心元素填補為零,以模擬較大的篩選核心效果。
StartPadding
類型:_Field_size_ (DimensionCount) const UINT*
數位,其中包含要套用至篩選條件之每個空間維度開頭的填補值,以及卷積運算的輸入張量。 開始填補值會根據 Direction 欄位進行解譯。
EndPadding
類型:_Field_size_ (DimensionCount) const UINT*
數位,其中包含要套用至篩選條件之每個空間維度結尾的填補值,以及捲積運算的輸入張量。 結束填補值會根據 Direction 字段解譯。
OutputPadding
類型:_Field_size_ (DimensionCount) const UINT*
陣列,包含捲積作業的輸出填補。 OutputPadding 會將零填補套用至卷積的結果。 此填補會套用至輸出張量之每個空間維度的結尾。
GroupCount
類型: UINT
要分割卷積作業的群組數目。 這可用來藉由將 GroupCount 設定為等於輸入通道計數,以及 Direction 等於 DML_CONVOLUTION_DIRECTION_FORWARD來達到深度卷積。 這會將卷積分成每個輸入通道的個別卷積。
FusedActivation
類型:_Maybenull_ const DML_OPERATOR_DESC*
要在卷積之後套用的選擇性融合啟用層。 如需詳細資訊,請參閱 使用 fused 運算子改善效能。
模式互動
卷積模式 | 卷積方向 | 篩選方向 |
---|---|---|
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_FORWARD | 篩選具有身分識別方向 |
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_BACKWARD | 篩選是沿著 x,y 軸轉置 |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_FORWARD | 篩選是沿著 x,y 軸轉置 |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_BACKWARD | 篩選具有身分識別方向 |
可用性
這個運算子是在 中 DML_FEATURE_LEVEL_1_0
引進的。
Tensor 條件約束
BiasTensor、 FilterTensor、 InputTensor 和 OutputTensor 必須具有相同 的 DataType 和 DimensionCount。
Tensor 支援
DML_FEATURE_LEVEL_4_0和更新版本
張 | 種類 | 維度 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|---|
InputTensor | 輸入 | { BatchCount, InputChannelCount, [InputDepth], [InputHeight], InputWidth } | 3 到 5 | FLOAT32,FLOAT16 |
FilterTensor | 輸入 | { FilterBatchCount, FilterChannelCount, [FilterDepth], [FilterHeight], FilterWidth } | 3 到 5 | FLOAT32,FLOAT16 |
BiasTensor | 選擇性輸入 | { 1, OutputChannelCount, [1], [1], 1 } | 3 到 5 | FLOAT32,FLOAT16 |
OutputTensor | 輸出 | { BatchCount, OutputChannelCount, [OutputDepth], [OutputHeight], OutputWidth } | 3 到 5 | FLOAT32,FLOAT16 |
DML_FEATURE_LEVEL_1_0和更新版本
張 | 種類 | 維度 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|---|
InputTensor | 輸入 | { BatchCount, InputChannelCount, [InputDepth], InputHeight, InputWidth } | 4 到 5 | FLOAT32,FLOAT16 |
FilterTensor | 輸入 | { FilterBatchCount, FilterChannelCount, [FilterDepth], FilterHeight, FilterWidth } | 4 到 5 | FLOAT32,FLOAT16 |
BiasTensor | 選擇性輸入 | { 1, OutputChannelCount, [1], 1, 1 } | 4 到 5 | FLOAT32,FLOAT16 |
OutputTensor | 輸出 | { BatchCount, OutputChannelCount, [OutputDepth], OutputHeight, OutputWidth } | 4 到 5 | FLOAT32,FLOAT16 |
規格需求
需求 | 值 |
---|---|
標頭 | directml.h |