DML_ARGMAX_OPERATOR_DESC-Struktur (directml.h)
Gibt die Indizes der maximalwertigen Elemente innerhalb einer oder mehrerer Dimensionen des Eingabe tensors aus.
Jedes Ausgabeelement ist das Ergebnis der Anwendung einer argmax-Reduzierung auf eine Teilmenge des Eingabe tensors. Die funktion argmax gibt den Index des maximalwertigen Elements innerhalb einer Reihe von Eingabeelementen aus. Die an jeder Reduzierung beteiligten Eingabeelemente werden durch die bereitgestellten Eingabeachsen bestimmt. Ähnlich verhält sich jeder Ausgabeindex in Bezug auf die bereitgestellten Eingabeachsen. Wenn alle Eingabeachsen angegeben sind, wendet der Operator eine einzelne Argmax-Reduzierung an und erzeugt ein einzelnes Ausgabeelement.
Syntax
struct DML_ARGMAX_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
DML_AXIS_DIRECTION AxisDirection;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, aus dem gelesen werden soll.
OutputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, in den die Ergebnisse geschrieben werden sollen. Jedes Ausgabeelement ist das Ergebnis einer Argmax-Reduzierung für eine Teilmenge von Elementen aus dem InputTensor.
- DimensionCount muss mit InputTensor.DimensionCount übereinstimmen (der Rang des Eingabe tensors wird beibehalten).
- Die Größen müssen InputTensor.Sizes entsprechen, mit Ausnahme der Dimensionen, die in den reduzierten Achsen enthalten sind, die Größe 1 sein müssen.
AxisCount
Typ: UINT
Die Anzahl der zu reduzierenden Achsen. Dieses Feld bestimmt die Größe des Axes-Arrays .
Axes
Typ: _Field_size_(AxisCount) const UINT*
Die Achsen, auf denen reduziert werden soll. Die Werte müssen im Bereich liegen [0, InputTensor.DimensionCount - 1]
.
AxisDirection
Typ: DML_AXIS_DIRECTION
Bestimmt, welcher Index ausgewählt werden soll, wenn mehrere Eingabeelemente denselben Wert aufweisen.
- DML_AXIS_DIRECTION_INCREASING gibt den Index des ersten maximalwertigen Elements (z. B. ) zurück.
argmax({3,2,1,2,3}) = 0
- DML_AXIS_DIRECTION_DECREASING gibt den Index des letzten maximalwertigen Elements zurück (z. B.
argmax({3,2,1,2,3}) = 4
)
Beispiele
In den Beispielen in diesem Abschnitt wird derselbe zweidimensionale Eingabe tensor verwendet.
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 5, 2]]
Beispiel 1: Anwenden von argmax auf Spalten
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})
Beispiel 2: Anwenden von argmax auf Zeilen
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})
Beispiel 3: Anwenden von argmax auf alle Achsen (der gesamte 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})
Hinweise
Die Ausgabe-Tensorgrößen müssen mit den Eingangs tensorgrößen übereinstimmen, mit Ausnahme der reduzierten Achsen, die 1 sein müssen.
Wenn AxisDirectionDML_AXIS_DIRECTION_INCREASING ist, entspricht diese API DML_REDUCE_OPERATOR_DESC mit DML_REDUCE_FUNCTION_ARGMAX.
Eine Teilmenge dieser Funktionalität wird über den DML_REDUCE_OPERATOR_DESC-Operator verfügbar gemacht und auf früheren DirectML-Featureebenen unterstützt.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_3_0
eingeführt.
Tensoreinschränkungen
InputTensor und OutputTensor müssen über dieselbe DimensionCount verfügen.
Tensorunterstützung
DML_FEATURE_LEVEL_4_1 und höher
Tensor | Typ | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_3_0 und höher
Tensor | Typ | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | INT64, INT32, UINT64, UINT32 |
Anforderungen
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |