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

種類: DML_REDUCE_FUNCTION

入力に適用する削減関数を指定します。

InputTensor

型: const DML_TENSOR_DESC*

読み取るテンソル。

OutputTensor

型: const DML_TENSOR_DESC*

結果を書き込むテンソル。 各出力要素は、 InputTensor からの要素のサブセットに対する削減の結果です。

  • DimensionCountInputTensor.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_ARGMAXDML_REDUCE_FUNCTION_ARGMINで使用できる機能を置き換えるこれらのスタンドアロン演算子が導入されました。