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 條件約束
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 |
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 |