DML_GATHER_ELEMENTS_OPERATOR_DESC 構造体 (directml.h)
インデックス テンソルを使用して入力テンソルから指定された軸に沿って要素を収集し、入力に再マップします。 この演算子は、軸、入力ディメンション数、およびインデックスディメンション数に依存する正確な動作を使用して、次の擬似コードを実行します。
output[i, j, k, ...] = input[index[i, j, k, ...], j, k, ...] // if axis == 0
output[i, j, k, ...] = input[i, index[i, j, k, ...], k, ...] // if axis == 1
output[i, j, k, ...] = input[i, j, index[i, j, k, ...], ...] // if axis == 2
...
構文
struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
メンバー
InputTensor
型: const DML_TENSOR_DESC*
読み取るテンソル。
IndicesTensor
型: const DML_TENSOR_DESC*
アクティブな軸に沿った入力テンソルへのインデックス。 [サイズ] は、軸を除くすべてのディメンションの InputTensor.Sizes と一致する必要があります。
以降では、このテンソルで DML_FEATURE_LEVEL_3_0
符号付き整数型を使用する場合、この演算子は負のインデックス値をサポートします。 負のインデックスは、軸ディメンションの終点を基準とすると解釈されます。 たとえば、-1 のインデックスは、そのディメンションに沿った最後の要素を参照します。
OutputTensor
型: const DML_TENSOR_DESC*
結果を書き込むテンソル。 サイズはインデックスTensor.Sizesと一致する必要があり、DataType は InputTensor.DataType と一致する必要があります。
Axis
型: UINT
に沿って収集する InputTensor の軸ディメンション 。範囲 [0, *InputTensor.DimensionCount*)
は です。
例
Axis = 0
InputTensor: (Sizes:{3,3}, DataType:FLOAT32)
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
IndicesTensor: (Sizes:{2,3}, DataType:UINT32)
[[1, 2, 0],
[2, 0, 0]]
// output[y, x] = input[indices[y, x], x]
OutputTensor: (Sizes:{2,3}, DataType:UINT32)
[[4, 8, 3], // select elements vertically from data
[7, 2, 3]]
可用性
この演算子は、 で DML_FEATURE_LEVEL_2_1
導入されました。
テンソル制約
IndicesTensor
、 InputTensor、 および OutputTensor には、同じ DimensionCount が必要です。- InputTensor と OutputTensor の DataType は同じである必要があります。
Tensor のサポート
DML_FEATURE_LEVEL_4_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
インデックスTensor | 入力 | 1 から 8 | INT64、INT32、UINT64、UINT32 |
OutputTensor | 出力 | 1 から 8 | FLOAT64、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 |
インデックスTensor | 入力 | 1 から 8 | INT64、INT32、UINT64、UINT32 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
インデックスTensor | 入力 | 4 | UINT32 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | directml.h |