Freigeben über


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_0eingefü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