Estructura DML_ACTIVATION_HARDMAX1_OPERATOR_DESC (directml.h)
Realiza una función hardmax en cada elemento de InputTensor y coloca el resultado en el elemento correspondiente de OutputTensor.
El operador calcula la función hardmax (1 para el primer valor máximo en los ejes especificados y 0 para todos los demás valores) de cada elemento de la entrada especificada.
reducedTensor = ReduceArgMax(InputTensor, axes = Axes, axisDirection = DML_AXIS_DIRECTION_INCREASING)
broadcastedTensor = Broadcast the `reducedTensor` to `InputTensor`
for each coordinate in OutputTensor
if broadcastedTensor[coordinate] == reducedIndexOf(coordinate) // reducedIndexOf(coordinate) is the index of the coordinate within reduced axes `axes`.
OutputTensor[coordinate] = 1
else
OutputTensor[coordinate] = 0
endfor
Donde ReduceArgMax(input = InputTensor, axis = Axes) es DML_REDUCE_OPERATOR con DML_REDUCE_FUNCTION_ARGMAX como función de reducción.
Importante
Esta API está disponible como parte del paquete redistribuible independiente DirectML (consulte la versión 1.9 y versiones posteriores de Microsoft.AI.DirectML). Consulte también el historial de versiones de DirectML.
Sintaxis
struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
UINT AxisCount;
_Field_size_(AxisCount) const UINT* Axes;
};
Miembros
InputTensor
Tipo: const DML_TENSOR_DESC*
El tensor de entrada de donde leer.
OutputTensor
Tipo: const DML_TENSOR_DESC*
El tensor de salida en el que escribir el resultado.
AxisCount
Tipo: UINT
Número de ejes para calcular la función hardmax de reducción. Este campo determina el tamaño de la matriz Axes.
Axes
Tipo: _Field_size_(AxisCount) const UINT*
Los ejes por los que se va a reducir la función hardmax. Los valores deben estar en el intervalo de [0, InputTensor.DimensionCount - 1]
.
Ejemplos
Todos los ejemplos siguientes usan este mismo tensor de entrada tridimensional:
InputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
[
[ 12, 0],
[-101, 11],
],
[
[ 3, 234],
[ 0, -101],
]
]
Ejemplo 1
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
[ // max element in {12, -101} is 12 and in {0, 11} is 11
[1, 0],
[0, 1],
],
[ // max element in {3, 0} is 3 and in {234, -101} is 234
[1, 1],
[0, 0],
]
]
Ejemplo 2
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
[ // max element in {12, 3} is 12, in {0, 234} is 234, in {-101, 0} is 0 and in {11, -101} is 11
[1, 0],
[0, 1],
],
[
[0, 1],
[1, 0],
]
]
Ejemplo 3
AxisCount: 2
Axes: {0, 2}
OutputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
[ // max element in {12, 0, 3, 234} is 234 and in {-101, 11, 0, -101} is 11
[0, 0],
[0, 1],
],
[
[0, 1],
[0, 0],
]
]
Comentarios
Este operador es equivalente a DML_ACTIVATION_HARDMAX_OPERATOR_DESC cuando AxisCount == 1 y Axes == {DimensionCount - 1}
.
Disponibilidad
Este operador se introdujo en DML_FEATURE_LEVEL_5_1.
Restricciones de tensor
InputTensor y OutputTensor deben tener los mismos DataType, DimensionCount y Sizes.
Compatibilidad del tensor
Tensor | Clase | Recuentos de dimensiones admitidos | Tipos de datos admitidos |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16 |
OutputTensor | Salida | 1 a 8 | FLOAT32, FLOAT16 |
Requisitos
Encabezado | directml.h |