DML_MAX_POOLING_GRAD_OPERATOR_DESC構造体 (directml.h)

最大プールのバックプロパティ グラデーションを計算します ( DML_MAX_POOLING2_OPERATOR_DESCを参照)。

埋め込みも拡張も行わない 2 x 2 DML_MAX_POOLING2_OPERATOR_DESC と、次の実行を実行するストライドが 1 であるとします。

InputTensor             OutputTensor    IndicesTensor
[[1, 2, 3],   MaxPool    [[4, 4],        [[4, 4],
 [2, 4, 2],     -->       [6, 7]]         [7, 8]]
 [5, 6, 7]]

入力テンソルの各 2x2 ウィンドウの最大要素は、出力の 1 つの要素を生成します。 次に、同様のパラメーターを 指定したDML_MAX_POOLING_GRAD_OPERATOR_DESCの出力の例を示します。

InputTensor   InputGradientTensor            OutputGradientTensor
[[1, 2, 3],       [[1, 2],     MaxPoolGrad   [[0, 0, 0],
 [2, 4, 2],        [4, 5]]         -->        [0, 3, 0],
 [5, 6, 7]]                                   [0, 4, 5]]

実際、この演算子は InputTensor を使用して各ウィンドウから最大の要素のインデックスを決定し、これらのインデックスに基づいて InputGradientTensor の値を OutputGradientTensor に分散します。 インデックスが重複する場合は、値が合計されます。 参照されていない出力要素はすべてゼロになります。

同一の場合 (ウィンドウ内の複数の要素の最大値が同じ場合)、論理要素インデックスが最も小さい要素が選択されます。

構文

struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *WindowSize;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  const UINT            *Dilations;
};

メンバー

InputTensor

型: const DML_TENSOR_DESC*

入力機能テンソル。 これは通常、前方パスでDML_MAX_POOLING2_OPERATOR_DESCする InputTensor と同じテンソルです。

InputGradientTensor

型: const DML_TENSOR_DESC*

受信グラデーションテンソル。 これは通常、前のレイヤーのバックプロパティの出力から取得されます。 通常、このテンソルは、前方パスの対応するDML_MAX_POOLING2_OPERATOR_DESC出力と同じサイズになります。

OutputGradientTensor

型: const DML_TENSOR_DESC*

バックプロパティのグラデーションを含む出力テンソル。 通常、このテンソルは、前方パスの対応するDML_MAX_POOLING2_OPERATOR_DESC入力と同じサイズになります。

DimensionCount

型: UINT

StridesWindowSizeStartPaddingEndPaddingおよび Dilations 配列内の要素の数。 この値は、空間ディメンション数 (InputTensor の DimensionCount - 2) と等しい必要があります。 この演算子では 4D テンソルのみがサポートされるため、このパラメーターの有効な値は 2 のみです。

Strides

型: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCストライド」を参照してください。

WindowSize

型: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCの WindowSize」を参照してください。

StartPadding

型: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCでの StartPadding」を参照してください。

EndPadding

型: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCでの EndPadding」を参照してください。

Dilations

型: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESC拡張」を参照してください。

可用性

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

テンソル制約

  • InputGradientTensorInputTensorおよび OutputGradientTensor には、同じ DataTypeDimensionCount が必要です。
  • InputTensorOutputGradientTensor のサイズは同じである必要があります。

Tensor のサポート

DML_FEATURE_LEVEL_4_0以上

テンソル 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4 から 5 FLOAT32、FLOAT16
InputGradientTensor 入力 { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } 4 から 5 FLOAT32、FLOAT16
OutputGradientTensor 出力 { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4 から 5 FLOAT32、FLOAT16

DML_FEATURE_LEVEL_3_0以上

テンソル 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32、FLOAT16
InputGradientTensor 入力 { BatchCount, ChannelCount, OutputHeight, OutputWidth } 4 FLOAT32、FLOAT16
OutputGradientTensor 出力 { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32、FLOAT16

要件

   
サポートされている最小のクライアント Windows 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
Header directml.h