estrutura DML_GATHER_ELEMENTS_OPERATOR_DESC (directml.h)
Coleta elementos do tensor de entrada ao longo do eixo fornecido usando o tensor de índices para remapear para a entrada. Esse operador executa o pseudocódigo a seguir, com o comportamento exato dependente do eixo, da contagem de dimensões de entrada e da contagem de dimensões de índices.
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
...
Sintaxe
struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor do qual ler.
IndicesTensor
Tipo: const DML_TENSOR_DESC*
Os índices no tensor de entrada ao longo do eixo ativo. Os Tamanhos devem corresponder a InputTensor.Sizes para cada dimensão, exceto Axis.
DML_FEATURE_LEVEL_3_0
A partir do , esse operador dá suporte a valores de índice negativos ao usar um tipo integral assinado com esse tensor. Índices negativos são interpretados como sendo relativos ao final da dimensão do eixo. Por exemplo, um índice de -1 refere-se ao último elemento nessa dimensão.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor no qual gravar os resultados. Os Tamanhos devem corresponder a IndicesTensor.Sizes e DataType deve corresponder a InputTensor.DataType.
Axis
Tipo: UINT
A dimensão do eixo de InputTensor a ser coletada, variando [0, *InputTensor.DimensionCount*)
.
Exemplos
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]]
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_2_1
.
Restrições do Tensor
IndicesTensor
, InputTensor e OutputTensor devem ter o mesmo DimensionCount.- InputTensor e OutputTensor devem ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_4_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
IndicesTensor | Entrada | 1 a 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Saída | 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
IndicesTensor | Entrada | 1 a 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
IndicesTensor | Entrada | 4 | UINT32 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Cabeçalho | directml.h |