共用方式為


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*

索引會沿著使用中軸進入輸入張量。 除了Axis 以外,大小必須符合每個維度的 InputTensor.Sizes

DML_FEATURE_LEVEL_3_0從 開始,當搭配這個張量使用帶正負號整數型別時,這個運算元支援負數索引值。 負數索引會解譯為相對於座標軸維度的結尾。 例如,-1 的索引是指該維度的最後一個專案。

OutputTensor

類型: const DML_TENSOR_DESC*

要寫入結果的張量。 大小必須符合 IndicesTensor.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引進的。

Tensor 條件約束

  • IndicesTensorInputTensorOutputTensor 必須具有相同的 DimensionCount
  • InputTensorOutputTensor 必須具有相同 的 DataType

Tensor 支援

DML_FEATURE_LEVEL_4_1和更新版本

種類 支援的維度計數 支援的資料類型
InputTensor 輸入 1 到 8 FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8
IndicesTensor 輸入 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
IndicesTensor 輸入 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
IndicesTensor 輸入 4 UINT32
OutputTensor 輸出 4 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8

規格需求

需求
最低支援的用戶端 Windows 10 組建 20348
最低支援的伺服器 Windows 10 組建 20348
標頭 directml.h