DML_CUMULATIVE_SUMMATION_OPERATOR_DESC構造体 (directml.h)
軸に沿ってテンソルの要素を合計し、合計の実行中の集計を出力テンソルに書き込みます。
構文
struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveSum;
};
メンバー
InputTensor
型: const DML_TENSOR_DESC*
合計する要素を含む入力テンソル。
OutputTensor
型: const DML_TENSOR_DESC*
結果の累積合計を書き込む出力テンソル。 このテンソルのサイズとデータ型は 、InputTensor と同じである必要があります。
Axis
型: UINT
要素を合計するディメンションのインデックス。 この値は、InputTensor の DimensionCount より小さくする必要があります。
AxisDirection
DML_AXIS_DIRECTION列挙の値の 1 つ。 DML_AXIS_DIRECTION_INCREASINGに設定すると、要素インデックスの昇順で指定した軸に沿ってテンソルを走査することによって合計が行われます。 DML_AXIS_DIRECTION_DECREASINGに設定すると、逆は true になり、インデックスを降順で要素を走査することによって合計が行われます。
HasExclusiveSum
種類: BOOL
TRUE の場合、実行中の集計を出力テンソルに書き込むときに、現在の要素の値が除外されます。 FALSE の場合、現在の要素の値が実行中の集計に含まれます。
例
このセクションの例はすべて、次のプロパティを持つ入力テンソルを使用します。
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
[3, 8, 7, 3],
[9, 6, 2, 4]]]]
例 1. 水平スライバー間の累積合計
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 3, 6, 11], // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
[3, 11, 18, 21], // [... ]
[9, 15, 17, 21]]]] // [... ]
例 2. 排他的合計
HasExclusiveSum を TRUE に設定すると、出力テンソルに書き込むときに、実行中の集計から現在の要素の値を除外する効果があります。
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: TRUE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2, 3, 6], // Notice the sum is written before adding the input,
[0, 3, 11, 18], // and the final total is not written to any output.
[0, 9, 15, 17]]]]
例 3. 軸の方向
AxisDirection を DML_AXIS_DIRECTION_DECREASING に設定すると、実行中の集計を計算するときに要素のトラバーサル順序が反転します。
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11, 9, 8, 5], // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
[21, 18, 10, 3], // [... ]
[21, 12, 6, 4]]]] // [... ]
例 4. 別の軸に沿った合計
この例では、集計は高さ軸 (ディメンション 2) に沿って垂直方向に行われます。
Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2, 1, 3, 5], // i.e. [2, ...]
[ 5, 9, 10, 8], // [2+3, ...]
[14, 15, 12, 12]]]] // [2+3+9 ...]
解説
この演算子はインプレース実行をサポートしています。つまり、バインド中に OutputTensor に InputTensor のエイリアスを設定できます。
可用性
この演算子は で DML_FEATURE_LEVEL_2_1
導入されました。
テンソル制約
InputTensor と OutputTensor には、同じ DataType、 DimensionCount、および サイズが必要です。
Tensor のサポート
DML_FEATURE_LEVEL_5_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_4_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT32、UINT32 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
要件
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | directml.h |