DML_TOP_K1_OPERATOR_DESC構造体 (directml.h)
InputTensor の軸に沿って各シーケンスから最大または最小の K 要素を選択し、OutputValueTensor と OutputIndexTensor のこれらの要素の値とインデックスをそれぞれ返します。 シーケンスは、InputTensor の Axis ディメンションに沿って存在する要素のセットの 1 つを参照します。
最大の K 要素を選択するか、最小の K 要素を選択するかの選択は 、AxisDirection を使用して制御できます。
構文
struct DML_TOP_K1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputValueTensor;
const DML_TENSOR_DESC *OutputIndexTensor;
UINT Axis;
UINT K;
DML_AXIS_DIRECTION AxisDirection;
};
メンバー
InputTensor
型: const DML_TENSOR_DESC*
選択する要素を含む入力テンソル。
OutputValueTensor
型: const DML_TENSOR_DESC*
上位 K 要素の値を書き込む出力テンソル。 上部の K 要素は、 AxisDirection の値に応じて、最も大きい要素か最小値かに基づいて選択されます。 このテンソルのサイズは、Axis パラメーターで指定されたディメンションを除き、InputTensor と同じサイズにする必要があります。ただし、サイズは K に等しい必要があります。
AxisDirection がDML_AXIS_DIRECTION_DECREASINGの場合、各入力シーケンスから選択された K 値は降順 (最大から最小) で並べ替えられます。 それ以外の場合、その逆は true であり、選択した値は昇順 (最小から最大) で並べ替えられます。
OutputIndexTensor
型: const DML_TENSOR_DESC*
上位 K 要素のインデックスを書き込む出力テンソル。 このテンソルのサイズは、Axis パラメーターで指定されたディメンションを除き、InputTensor と同じサイズにする必要があります。ただし、サイズは K に等しい必要があります。
このテンソルで返されるインデックスは、シーケンスの先頭 (テンソルの先頭ではなく) に対して相対的に測定されます。 たとえば、インデックス 0 は、軸内のすべてのシーケンスの最初の要素を常に参照します。
top-K 内の 2 つ以上の要素の値が同じ場合 (つまり、タイがある場合)、両方の要素のインデックスが含まれ、昇順の要素インデックスで順序付けされていることが保証されます。 これは AxisDirection の値に関係なく当てはまります。
Axis
型: UINT
要素を選択するディメンションのインデックス。 この値は、InputTensor の DimensionCount より小さくする必要があります。
K
型: UINT
選択する要素の数。 K は 0 より大きくする必要がありますが、Axis で指定されたディメンションに沿った InputTensor 内の要素の数より小さい必要があります。
AxisDirection
DML_AXIS_DIRECTION列挙の値。 DML_AXIS_DIRECTION_INCREASINGに設定すると、この演算子は値を増やす順序で最小の K 要素を返します。 それ以外の場合は、最大の K 要素を減少順に返します。
例
例 1
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0, 1, 10, 11],
[ 3, 2, 9, 8],
[ 4, 5, 6, 7]]]]
Axis: 3
K: 2
AxisDirection: DML_AXIS_DIRECTION_DECREASING
OutputValueTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[11, 10],
[ 9, 8],
[ 7, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,2}, DataType:UINT32)
[[[[3, 2],
[2, 3],
[3, 2]]]]
例 2. 別の軸を使用する
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0, 1, 10, 11],
[ 3, 2, 9, 8],
[ 4, 5, 6, 7]]]]
Axis: 2
K: 2
AxisDirection: DML_AXIS_DIRECTION_DECREASING
OutputValueTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[[[ 4, 5, 10, 11],
[ 3, 2, 9, 8]]]]
OutputIndexTensor: (Sizes:{1,1,2,4}, DataType:UINT32)
[[[[2, 2, 0, 0],
[1, 1, 1, 1]]]]
例 3. 関連付けられた値
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 3],
[3, 4, 5, 5],
[6, 6, 6, 6]]]]
Axis: 3
K: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[3, 2, 2],
[5, 5, 4],
[6, 6, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[3, 1, 2],
[2, 3, 1],
[0, 1, 2]]]]
例 4. 軸方向の拡大
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 3],
[3, 4, 5, 5],
[6, 6, 6, 6]]]]
Axis: 3
K: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[1, 2, 2],
[3, 4, 5],
[6, 6, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[0, 1, 2],
[0, 1, 2],
[0, 1, 2]]]]
解説
AxisDirection が DML_AXIS_DIRECTION_DECREASING に設定されている場合、この演算子はDML_TOP_K_OPERATOR_DESCと同じです。
可用性
この演算子は で DML_FEATURE_LEVEL_2_1
導入されました。
テンソル制約
- InputTensor、 OutputIndexTensor、および OutputValueTensor は、同じ DimensionCount を持つ必要があります。
- InputTensor と OutputValueTensor には、同じ DataType が必要です。
Tensor のサポート
DML_FEATURE_LEVEL_5_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputValueTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputIndexTensor | 出力 | 1 から 8 | UINT64、UINT32 |
DML_FEATURE_LEVEL_3_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputValueTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputIndexTensor | 出力 | 1 から 8 | UINT32 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputValueTensor | 出力 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputIndexTensor | 出力 | 4 | UINT32 |
要件
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | directml.h |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示