struttura DML_GATHER_ELEMENTS_OPERATOR_DESC (directml.h)
Raccoglie gli elementi dal tensore di input lungo l'asse specificato usando il tensore di indici per eseguire nuovamente il mapping nell'input. Questo operatore esegue lo pseudocodice seguente, con il comportamento esatto dipendente dall'asse, dal numero di dimensioni di input e dal conteggio delle dimensioni degli indici.
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
...
Sintassi
struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore da cui leggere.
IndicesTensor
Tipo: const DML_TENSOR_DESC*
Indici nel tensore di input lungo l'asse attivo. Le dimensioni devono corrispondere a InputTensor.Sizes per ogni dimensione ad eccezione di Axis.
DML_FEATURE_LEVEL_3_0
A partire da , questo operatore supporta i valori di indice negativi quando si usa un tipo integrale con segno con questo tensore. Gli indici negativi vengono interpretati come relativi alla fine della dimensione dell'asse. Ad esempio, un indice di -1 fa riferimento all'ultimo elemento lungo tale dimensione.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore in cui scrivere i risultati. Le dimensioni devono corrispondere a IndicesTensor.Sizes e DataType devono corrispondere a InputTensor.DataType.
Axis
Tipo: UINT
Dimensione dell'asse di InputTensor da raccogliere, che va da [0, *InputTensor.DimensionCount*)
.
Esempio
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]]
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_2_1
.
Vincoli tensor
IndicesTensor
, InputTensor e OutputTensor devono avere lo stesso DimensionCount.- InputTensor e OutputTensor devono avere lo stesso Tipo di dati.
Supporto di Tensor
DML_FEATURE_LEVEL_4_1 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | da 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
IndicesTensor | Input | da 1 a 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Output | da 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
IndicesTensor | Input | da 1 a 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Output | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
IndicesTensor | Input | 4 | UINT32 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 Build 20348 |
Server minimo supportato | Windows 10 Build 20348 |
Intestazione | directml.h |