DML_CONVOLUTION_OPERATOR_DESC構造体 (directml.h)

InputTensor を使用して FilterTensor の畳み込みを実行します。 この演算子は、多数の標準的な畳み込み構成をサポートしています。 これらの標準構成には、[ 方向 ] フィールドと [モード ] フィールドを設定して前方および後方 (入れ替え) 畳み込み、 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 の場合は 。

出力チャネルごとに、そのチャネルの 1 つのバイアス値が OutputTensor のそのチャネル内のすべての要素に追加されます。 つまり、 BiasTensorOutputTensor のサイズにブロードキャストされ、演算子が返すのは、このブロードキャストされた 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*

畳み込み操作の拡張を含む配列。 拡張は、フィルター カーネルの要素に適用されるストライドです。 これは、内部フィルター カーネル要素にゼロを埋め込むことで、より大きなフィルター カーネルをシミュレートする効果があります。

StartPadding

型: _Field_size_(DimensionCount) const UINT*

フィルターの各空間ディメンションの先頭に適用される埋め込み値と畳み込み操作の入力テンソルを含む配列。 開始パディング値は、 Direction フィールドに従って解釈されます。

EndPadding

型: _Field_size_(DimensionCount) const UINT*

フィルターの各空間ディメンションの末尾に適用される埋め込み値と畳み込み操作の入力テンソルを含む配列。 終了埋め込みの値は、[ 方向 ] フィールドに従って解釈されます。

OutputPadding

型: _Field_size_(DimensionCount) const UINT*

畳み込み操作の出力パディングを含む配列。 OutputPadding では、畳み込みの結果に 0 個のパディングが適用されます。 このパディングは、出力テンソルの各空間ディメンションの末尾に適用されます。

GroupCount

型: UINT

畳み込み操作を分割するグループの数。 これは、 GroupCount を入力チャネル数に等しく、 DirectionDML_CONVOLUTION_DIRECTION_FORWARD に等しく設定することで、深さ方向の畳み込みを実現するために使用できます。 これにより、畳み込みを入力チャネルごとに個別の畳み込みに分割します。

FusedActivation

型: _Maybenull_ const DML_OPERATOR_DESC*

畳み込み後に適用するオプションの融合アクティブ化レイヤー。 詳細については、「パフォーマンスを 向上させるために融合演算子を使用する」を参照してください。

モード操作

畳み込みモード 畳み込み方向 フィルターの向き
DML_CONVOLUTION_MODE_CROSS_CORRELATION DML_CONVOLUTION_DIRECTION_FORWARD フィルターに ID の向きがある
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 フィルターに ID の向きがある

可用性

この演算子は で DML_FEATURE_LEVEL_1_0導入されました。

テンソル制約

BiasTensorFilterTensorInputTensorおよび OutputTensor には、同じ DataTypeDimensionCount が必要です。

Tensor のサポート

DML_FEATURE_LEVEL_4_0以上

テンソル 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
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以上

テンソル 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
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

要件

要件
Header directml.h

こちらもご覧ください