Freigeben über


DML_ACTIVATION_HARDMAX1_OPERATOR_DESC-Struktur (directml.h)

Führt eine Hardmax-Funktion für jedes Element in InputTensor aus, wobei das Ergebnis in das entsprechende Element von OutputTensor eingefügt wird.

Der Operator berechnet das Hardmax (1 für den ersten Höchstwert entlang der angegebenen Achsen und 0 für alle anderen Werte) jedes Elements in der angegebenen Eingabe.

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

Dabei wird ReduceArgMax(input = InputTensor, axis = Axes) mit DML_REDUCE_FUNCTION_ARGMAX als Reducer-Funktion DML_REDUCE_OPERATOR.

Wichtig

Diese API ist als Teil des eigenständigen weiterverteilbare Pakets DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.9 und höher). Siehe auch DirectML-Versionsverlauf.

Syntax

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

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Eingabe-Tensor, aus dem gelesen wird.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe-Tensor, in die das Ergebnis geschrieben werden soll.

AxisCount

Typ: UINT

Die Anzahl der Achsen zur Berechnung des reduzierten Hardmax. Dieses Feld bestimmt die Größe der Matrix Achsen.

Axes

Typ: _Field_size_(AxisCount) const UINT*

Die Achsen, entlang derer Hardmax reduziert werden soll. Werte müssen im Bereich liegen [0, InputTensor.DimensionCount - 1].

Beispiele

In den folgenden Beispielen wird derselbe dreidimensionale Eingabe-Tensor verwendet:

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

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

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

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

Hinweise

Dieser Operator entspricht DML_ACTIVATION_HARDMAX_OPERATOR_DESC, wenn AxisCount == 1 und Achsen == {DimensionCount - 1}.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_5_1 eingeführt.

Tensor-Einschränkungen

InputTensor und OutputTensor müssen denselben DataType, DimensionCount, und Sizes aufweisen.

Tensor-Unterstützung

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16
OutputTensor Output 1 bis 8 FLOAT32, FLOAT16

Anforderungen

   
Übergeordnet directml.h

Weitere Informationen