DML_ARGMAX_OPERATOR_DESC構造体 (directml.h)
入力テンソルの 1 つ以上の次元内の最大値要素のインデックスを出力します。
各出力要素は、入力テンソルのサブセットに argmax 減少を適用した結果です。 argmax 関数は、入力要素のセット内の最大値要素のインデックスを出力します。 各削減に関係する入力要素は、指定された入力軸によって決定されます。 同様に、各出力インデックスは、指定された入力軸に対して行われます。 すべての入力軸が指定されている場合、演算子は 1 つの argmax 減少を適用し、1 つの出力要素を生成します。
構文
struct DML_ARGMAX_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
DML_AXIS_DIRECTION AxisDirection;
};
メンバー
InputTensor
型: const DML_TENSOR_DESC*
読み取るテンソル。
OutputTensor
型: const DML_TENSOR_DESC*
結果を書き込むテンソル。 各出力要素は、InputTensor からの要素のサブセットに対する argmax の減少の結果です。
- DimensionCount は InputTensor.DimensionCount と一致する必要があります (入力テンソルのランクは保持されます)。
- サイズは、縮小された軸に含まれるディメンションを除き、InputTensor.Sizes と一致する必要があります。ただし、サイズは 1 である必要があります。
AxisCount
型: UINT
減らす軸の数。 このフィールドは 、Axes 配列のサイズを決定します。
Axes
型: _Field_size_(AxisCount) const UINT*
縮小する軸。 値は、 の範囲内 [0, InputTensor.DimensionCount - 1]
である必要があります。
AxisDirection
複数の入力要素が同じ値を持つ場合に選択するインデックスを決定します。
- DML_AXIS_DIRECTION_INCREASING は、最初の最大値要素のインデックスを返します (例:
argmax({3,2,1,2,3}) = 0
) - DML_AXIS_DIRECTION_DECREASING は、最後の最大値要素のインデックスを返します (例:
argmax({3,2,1,2,3}) = 4
)
例
このセクションの例では、すべて同じ 2 次元入力テンソルを使用します。
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 5, 2]]
例 1. argmax を列に適用する
AxisCount: 1
Axes: {0}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 3}, DataType:UINT32)
[[1, // argmax({1, 3, 2})
2, // argmax({2, 0, 5})
1]] // argmax({3, 4, 2})
例 2. 行への argmax の適用
AxisCount: 1
Axes: {1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{3, 1}, DataType:UINT32)
[[2], // argmax({1, 2, 3})
[2], // argmax({3, 0, 4})
[1]] // argmax({2, 5, 2})
例 3. すべての軸 (テンソル全体) に argmax を適用する
AxisCount: 2
Axes: {0, 1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 1}, DataType:UINT32)
[[7]] // argmax({1, 2, 3, 3, 0, 4, 2, 5, 2})
解説
出力テンソル サイズは、1 である必要がある縮小軸を除き、入力テンソル サイズと同じである必要があります。
AxisDirection がDML_AXIS_DIRECTION_INCREASINGされている場合、この API は DML_REDUCE_FUNCTION_ARGMAX でのDML_REDUCE_OPERATOR_DESCと同じです。
この機能のサブセットは 、DML_REDUCE_OPERATOR_DESC 演算子を介して公開され、以前の DirectML 機能レベルでサポートされています。
可用性
この演算子は で DML_FEATURE_LEVEL_3_0
導入されました。
テンソル制約
InputTensor と OutputTensor には、同じ DimensionCount が必要です。
Tensor のサポート
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 |
要件
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | directml.h |