Compartir a través de


estructura DML_REDUCE_OPERATOR_DESC (directml.h)

Genera la reducción de elementos (suma, producto, mínimo, etc.) dentro de una o varias dimensiones del tensor de entrada.

Cada elemento de salida es el resultado de aplicar una función de reducción en un subconjunto del tensor de entrada. Una función de reducción, como sum, asigna N elementos de entrada a un único elemento de salida. Los elementos de entrada implicados en cada reducción están determinados por los ejes de entrada proporcionados: N es igual al producto de los tamaños de los ejes reducidos. Si se especifican todos los ejes de entrada, el operador realiza una reducción en todo el tensor de entrada y genera un único elemento de salida.

Sintaxis

struct DML_REDUCE_OPERATOR_DESC {
  DML_REDUCE_FUNCTION   Function;
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
};

Miembros

Function

Tipo: DML_REDUCE_FUNCTION

Especifica la función de reducción que se va a aplicar a la entrada.

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor desde el que se va a leer.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor en el que se van a escribir los resultados. Cada elemento de salida es el resultado de una reducción en un subconjunto de elementos de InputTensor.

  • DimensionCount debe coincidir con InputTensor.DimensionCount (se conserva la clasificación del tensor de entrada).
  • Los tamaños deben coincidir con InputTensor.Sizes, excepto las dimensiones incluidas en los ejes reducidos, que deben tener el tamaño 1.

AxisCount

Tipo: UINT

Número de ejes que se van a reducir. Este campo determina el tamaño de la matriz de ejes .

Axes

Tipo: _Field_size_(AxisCount) const UINT*

Ejes a lo largo del cual se va a reducir. Los valores deben estar en el intervalo [0, InputTensor.DimensionCount - 1].

Ejemplos

En los ejemplos siguientes se usa este mismo tensor de entrada bidimensional.

InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
 [3, 0, 4],
 [2, 4, 2]]

Ejemplo 1. Aplicación de suma a columnas

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6,  // sum({1, 3, 2})
  6,  // sum({2, 0, 4})
  9]] // sum({3, 4, 2})

Ejemplo 2. Aplicación de la suma a las filas

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
 [7], // sum({3, 0, 4})
 [8]] // sum({2, 4, 2})

Ejemplo 3.Aplicar suma a todos los ejes (el tensor completo)

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]]  // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_1_0.

Restricciones tensor

  • Los tipos de datos tensor de entrada y salida deben coincidir excepto cuando se usan las funciones ARGMAX y ARGMIN, que siempre generan un tipo de datos entero.
  • Los tamaños de salida deben ser los mismos que los tamaños de entrada, excepto los ejes reducidos, que deben ser 1.

Compatibilidad con Tensor según la función

ARGMIN y ARGMAX

DML_FEATURE_LEVEL_4_1 y versiones posteriores
Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Resultados De 1 a 8 INT64, INT32, UINT64, UINT32

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
OutputTensor Resultados De 1 a 8 INT64, INT32, UINT64, UINT32

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
OutputTensor Resultados 4 UINT32

DML_FEATURE_LEVEL_1_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16
OutputTensor Resultados 4 UINT32

AVERAGE, L2, LOG_SUM y LOG_SUM_EXP

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
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16
DML_FEATURE_LEVEL_1_0 y versiones posteriores
Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16
OutputTensor Resultados 4 FLOAT32, FLOAT16

L1 y SUM_SQUARE

DML_FEATURE_LEVEL_5_0 y versiones posteriores
Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

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
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_1_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16
OutputTensor Resultados 4 FLOAT32, FLOAT16

MIN y MAX

DML_FEATURE_LEVEL_5_0 y versiones posteriores
Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Resultados De 1 a 8 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
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, UINT32
OutputTensor Resultados 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16
OutputTensor Resultados 4 FLOAT32, FLOAT16

MULTIPLICACIÓN y SUMA

DML_FEATURE_LEVEL_5_0 y versiones posteriores
Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

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, UINT32
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Resultados 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16
OutputTensor Resultados 4 FLOAT32, FLOAT16

Requisitos

Requisito Valor
Header directml.h

Consulte también

El nivel de característica 3_0 introdujo estos operadores independientes que reemplazan la funcionalidad disponible con DML_REDUCE_FUNCTION_ARGMAX y DML_REDUCE_FUNCTION_ARGMIN.