Partager via


structure DML_ACTIVATION_HARDMAX1_OPERATOR_DESC (directml.h)

Exécute une fonction hardmax sur chaque élément d’InputTensor, en plaçant le résultat dans l’élément OutputTensor correspondant.

L’opérateur calcule le hardmax (1 pour la première valeur maximale le long des axes spécifiés, et 0 pour toutes les autres valeurs) de chaque élément dans l’entrée donnée.

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

Où ReduceArgMax(input = InputTensor, axis = Axes) est DML_REDUCE_OPERATOR avec DML_REDUCE_FUNCTION_ARGMAX en tant que fonction reduce.

Important

Cette API est disponible dans le cadre du package redistribuable autonome DirectML (voir Microsoft.AI.DirectML version 1.9 et ultérieures. Consultez également l’historique des versions DirectML.

Syntaxe

struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* OutputTensor;
    UINT AxisCount;
    _Field_size_(AxisCount) const UINT* Axes;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Capteur d’entrée à partir duquel lire.

OutputTensor

Type : const DML_TENSOR_DESC*

Le tensoriel de sortie dans lequel écrire les résultats.

AxisCount

Type : UINT

Nombre d’axes à calculer pour réduire la valeur hardmax. Ce champ détermine la taille du tableau Axes .

Axes

Type : _Field_size_(AxisCount) const UINT*

Axes le long desquels réduire le hardmax. Les valeurs doivent se trouver dans la plage [0, InputTensor.DimensionCount - 1].

Exemples

Les exemples suivants utilisent tous ce même capteur d’entrée tridimensionnel :

InputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
    [
        [  12, 0],
        [-101, 11],
    ],
    [
        [  3,  234],
        [  0, -101],
    ]
]

Exemple 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],
    ]
]

Exemple 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],
    ]
]

Exemple 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],
    ]
]

Remarques

Cet opérateur équivaut à DML_ACTIVATION_HARDMAX_OPERATOR_DESC lorsque AxisCount == 1 et Axes == {DimensionCount - 1}.

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_5_1.

Contraintes Tensor

InputTensor et OutputTensor doivent avoir les mêmes DataType, DimensionCount et Sizes.

Prise en charge de Tensor

Tenseur Genre Nombres de dimensions pris en charge Types de données pris en charge
InputTensor Entrée 1 à 8 FLOAT32, FLOAT16
Tenseur de sortie Sortie 1 à 8 FLOAT32, FLOAT16

Spécifications

   
En-tête directml.h

Voir aussi