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 |