Compartir a través de


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_0A 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