estructura DML_GATHER_ELEMENTS_OPERATOR_DESC (directml.h)
Recopila elementos del tensor de entrada a lo largo del eje especificado mediante el tensor de índices para volver a asignarlos a la entrada. Este operador realiza el pseudocódigo siguiente, con el comportamiento exacto que depende del eje, el recuento de dimensiones de entrada y el recuento de dimensiones 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
...
Sintaxis
struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Miembros
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensor del que se va a leer.
IndicesTensor
Tipo: const DML_TENSOR_DESC*
Los índices en el tensor de entrada a lo largo del eje activo. Los tamaños deben coincidir con InputTensor.Sizes para cada dimensión excepto Axis.
DML_FEATURE_LEVEL_3_0
A partir de , este operador admite valores de índice negativos cuando se usa un tipo entero firmado con este tensor. Los índices negativos se interpretan como relativos al final de la dimensión del eje. Por ejemplo, un índice de -1 hace referencia al último elemento a lo largo de esa dimensión.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensor en el que se van a escribir los resultados. Los tamaños deben coincidir con IndexsTensor.Sizes y DataType debe coincidir con InputTensor.DataType.
Axis
Tipo: UINT
Dimensión del eje de InputTensor que se va a recopilar, que abarca [0, *InputTensor.DimensionCount*)
.
Ejemplos
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]]
Disponibilidad
Este operador se introdujo en DML_FEATURE_LEVEL_2_1
.
Restricciones tensor
IndicesTensor
, InputTensor y OutputTensor deben tener el mismo DimensionCount.- InputTensor y OutputTensor deben tener el mismo tipo de datos.
Compatibilidad con Tensor
DML_FEATURE_LEVEL_4_1 y versiones posteriores
Tensor | Clase | Recuentos de dimensiones admitidos | Tipos de datos admitidos |
---|---|---|---|
InputTensor | Entrada | De 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
IndexsTensor | Entrada | De 1 a 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Resultados | De 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 y versiones posteriores
Tensor | Clase | Recuentos de dimensiones admitidos | Tipos de datos admitidos |
---|---|---|---|
InputTensor | Entrada | De 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
IndexsTensor | Entrada | De 1 a 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Resultados | De 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 y versiones posteriores
Tensor | Clase | Recuentos de dimensiones admitidos | Tipos de datos admitidos |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
IndexsTensor | Entrada | 4 | UINT32 |
OutputTensor | Resultados | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | compilación 20348 de Windows 10 |
Servidor mínimo compatible | compilación 20348 de Windows 10 |
Encabezado | directml.h |