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 |