Compartir a través de


estructura DML_ARGMAX_OPERATOR_DESC (directml.h)

Genera los índices de los elementos con valores máximos dentro de una o varias dimensiones del tensor de entrada.

Cada elemento de salida es el resultado de aplicar una reducción argmax en un subconjunto del tensor de entrada. La función argmax genera el índice del elemento con valores máximos dentro de un conjunto de elementos de entrada. Los elementos de entrada implicados en cada reducción se determinan mediante los ejes de entrada proporcionados. De forma similar, cada índice de salida se refiere a los ejes de entrada proporcionados. Si se especifican todos los ejes de entrada, el operador aplica una única reducción argmax y genera un único elemento de salida.

Sintaxis

struct DML_ARGMAX_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
  DML_AXIS_DIRECTION    AxisDirection;
};

Miembros

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 argmax 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].

AxisDirection

Tipo: DML_AXIS_DIRECTION

Determina qué índice seleccionar cuando varios elementos de entrada tienen el mismo valor.

  • DML_AXIS_DIRECTION_INCREASING devuelve el índice del primer elemento con valores máximos (por ejemplo, argmax({3,2,1,2,3}) = 0).
  • DML_AXIS_DIRECTION_DECREASING devuelve el índice del último elemento con valores máximos (por ejemplo, argmax({3,2,1,2,3}) = 4).

Ejemplos

Los ejemplos de esta sección usan este mismo tensor de entrada bidimensional.

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

Ejemplo 1. Aplicación de argmax a columnas

AxisCount: 1
Axes: {0}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 3}, DataType:UINT32)
[[1,  // argmax({1, 3, 2})
  2,  // argmax({2, 0, 5})
  1]] // argmax({3, 4, 2})

Ejemplo 2. Aplicación de argmax a filas

AxisCount: 1
Axes: {1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{3, 1}, DataType:UINT32)
[[2], // argmax({1, 2, 3})
 [2], // argmax({3, 0, 4})
 [1]] // argmax({2, 5, 2})

Ejemplo 3. Aplicar argmax a todos los ejes (todo el tensor)

AxisCount: 2
Axes: {0, 1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 1}, DataType:UINT32)
[[7]]  // argmax({1, 2, 3, 3, 0, 4, 2, 5, 2})

Comentarios

Los tamaños de tensor de salida deben ser los mismos que los tamaños de tensor de entrada, excepto los ejes reducidos, que deben ser 1.

Cuando Se DML_AXIS_DIRECTION_INCREASINGAxisDirection, esta API equivale a DML_REDUCE_OPERATOR_DESC con DML_REDUCE_FUNCTION_ARGMAX.

Un subconjunto de esta funcionalidad se expone a través del operador DML_REDUCE_OPERATOR_DESC y se admite en niveles de características anteriores de DirectML.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_3_0.

Restricciones tensor

InputTensor y OutputTensor deben tener el mismo DimensionCount.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_4_1 y versiones posteriores

Tensor Kind 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 Kind 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

Requisitos

   
Cliente mínimo compatible Compilación 20348 de Windows 10
Servidor mínimo compatible Compilación 20348 de Windows 10
Encabezado directml.h