Share via


DML_CONVOLUTION_OPERATOR_DESC 結構 (directml.h)

使用 InputTensor 執行 FilterTensor 的卷積。 此運算元支援許多標準卷積組態。 這些標準設定包括轉置 (轉置) 卷積,方法是設定 DirectionMode 欄位,以及藉由設定 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

用於捲積作業的模式。 DML_CONVOLUTION_MODE_CROSS_CORRELATION 是一般推斷案例所需的行為。 相反地, DML_CONVOLUTION_MODE_CONVOLUTION 會沿著每個空間維度翻轉每個篩選核心中的元素順序。

Direction

類型: DML_CONVOLUTION_DIRECTION

卷積運算的方向。 DML_CONVOLUTION_DIRECTION_FORWARD 是用於推斷的主要捲積形式,其中在定型期間會使用 DML_CONVOLUTION_DIRECTION_FORWARDDML_CONVOLUTION_DIRECTION_BACKWARD 的組合。

DimensionCount

類型: UINT

卷積作業的空間維度數目。 空間維度是卷積 FilterTensor 的較低維度。 例如,寬度和高度維度是 4D 卷積篩選張量的空間維度。 這個值也會決定 StridesDilationsStartPadding、EndPaddingOutputPadding 陣列的大小當 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 條件約束

BiasTensorFilterTensorInputTensorOutputTensor 必須具有相同 的 DataTypeDimensionCount

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

另請參閱