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と一致する必要があり、DataTypeInputTensor.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導入されました。

テンソル制約

  • IndicesTensorInputTensorおよび OutputTensor には、同じ DimensionCount が必要です。
  • InputTensorOutputTensorDataType は同じである必要があります。

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