次の方法で共有


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 の減少の結果です。

  • DimensionCountInputTensor.DimensionCount と一致する必要があります (入力テンソルのランクは保持されます)。
  • サイズは、縮小された軸に含まれるディメンションを除き、InputTensor.Sizes と一致する必要があります。ただし、サイズは 1 である必要があります。

AxisCount

型: UINT

減らす軸の数。 このフィールドは 、Axes 配列のサイズを決定します。

Axes

型: _Field_size_(AxisCount) const UINT*

縮小する軸。 値は、 の範囲内 [0, InputTensor.DimensionCount - 1]である必要があります。

AxisDirection

種類: DML_AXIS_DIRECTION

複数の入力要素が同じ値を持つ場合に選択するインデックスを決定します。

  • 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 である必要がある縮小軸を除き、入力テンソル サイズと同じである必要があります。

AxisDirectionDML_AXIS_DIRECTION_INCREASINGされている場合、この API は DML_REDUCE_FUNCTION_ARGMAX でのDML_REDUCE_OPERATOR_DESCと同じです。

この機能のサブセットは 、DML_REDUCE_OPERATOR_DESC 演算子を介して公開され、以前の DirectML 機能レベルでサポートされています。

可用性

この演算子は で DML_FEATURE_LEVEL_3_0導入されました。

テンソル制約

InputTensorOutputTensor には、同じ 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