DML_REDUCE_OPERATOR_DESC 構造体 (directml.h)
入力テンソルの 1 つ以上のディメンション内の要素 (合計、積、最小値など) の削減を出力します。
各出力要素は、入力テンソルのサブセットに削減関数を適用した結果です。 sum などの削減関数は、入力要素を 1 つの出力要素にマップN
します。 各削減に関係する入力要素は、指定された入力軸によって決定されます。 N
これは、縮小された軸のサイズの積と同じです。 すべての入力軸が指定されている場合、演算子は入力テンソル全体に対して減少を実行し、1 つの出力要素を生成します。
構文
struct DML_REDUCE_OPERATOR_DESC {
DML_REDUCE_FUNCTION Function;
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
};
メンバー
Function
入力に適用する削減関数を指定します。
InputTensor
型: const DML_TENSOR_DESC*
読み取るテンソル。
OutputTensor
型: const DML_TENSOR_DESC*
結果を書き込むテンソル。 各出力要素は、 InputTensor からの要素のサブセットに対する削減の結果です。
- DimensionCount は InputTensor.DimensionCount と一致する必要があります (入力テンソルのランクは保持されます)。
- サイズ は InputTensor.Sizes と一致する必要があります。ただし、縮小 軸に含まれるディメンションを除き、サイズは 1 にする必要があります。
AxisCount
型: UINT
減らす軸の数。 このフィールドは 、Axes 配列のサイズを決定します。
Axes
型: _Field_size_(AxisCount) const UINT*
縮小する軸。 値は、 の範囲内 [0, InputTensor.DimensionCount - 1]
である必要があります。
例
次の例では、すべて同じ 2 次元入力テンソルを使用します。
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 4, 2]]
例 1. 列に 合計 を適用する
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6, // sum({1, 3, 2})
6, // sum({2, 0, 4})
9]] // sum({3, 4, 2})
例 2. 行に 合計 を適用する
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
[7], // sum({3, 0, 4})
[8]] // sum({2, 4, 2})
例 3.すべての軸 (テンソル全体) に 合計 を適用する
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]] // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})
可用性
この演算子は、 で DML_FEATURE_LEVEL_1_0
導入されました。
テンソル制約
- 入力および出力テンソルのデータ型は、常に整数データ型を出力する ARGMAX 関数と ARGMIN 関数を使用する場合を除き、一致する必要があります。
- 出力サイズは、縮小軸 (1) を除き、入力サイズと同じである必要があります。
機能に応じたテンソルサポート
ARGMIN と ARGMAX
DML_FEATURE_LEVEL_4_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 1 から 8 | INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_3_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 1 から 8 | INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 4 | UINT32 |
DML_FEATURE_LEVEL_1_0以降
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 4 | UINT32 |
AVERAGE、L2、LOG_SUM、LOG_SUM_EXP
DML_FEATURE_LEVEL_3_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_1_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16 |
L1 とSUM_SQUARE
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_3_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_1_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16 |
MIN と MAX
DML_FEATURE_LEVEL_5_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_3_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
DML_FEATURE_LEVEL_1_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16 |
乗算と合計
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_3_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 |
DML_FEATURE_LEVEL_1_0以降
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16 |
要件
要件 | 値 |
---|---|
Header | directml.h |
こちらもご覧ください
機能レベル 3_0 では、 DML_REDUCE_FUNCTION_ARGMAX と DML_REDUCE_FUNCTION_ARGMINで使用できる機能を置き換えるこれらのスタンドアロン演算子が導入されました。