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
Strides、WindowSize、StartPadding、EndPadding、および 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
導入されました。
テンソル制約
- InputGradientTensor、 InputTensor、 および OutputGradientTensor には、同じ DataType と DimensionCount が必要です。
- InputTensor と OutputGradientTensor のサイズは同じである必要があります。
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 |