Share via


DML_REDUCE_OPERATOR_DESC-Struktur (directml.h)

Gibt die Reduzierung von Elementen (Summe, Produkt, Minimum usw.) innerhalb einer oder mehrerer Dimensionen des Eingabe tensors aus.

Jedes Ausgabeelement ist das Ergebnis der Anwendung einer Reduktionsfunktion auf eine Teilmenge des Eingabe tensors. Eine Reduktionsfunktion, z. B. sum, ordnet N Eingabeelemente einem einzelnen Ausgabeelement zu. Die an jeder Reduktion beteiligten Eingabeelemente werden durch die bereitgestellten Eingabeachsen bestimmt: N ist gleich dem Produkt der Größen der reduzierten Achsen. Wenn alle Eingabeachsen angegeben sind, führt der Operator eine Reduzierung des gesamten Eingabe tensors durch und erzeugt ein einzelnes Ausgabeelement.

Syntax

struct DML_REDUCE_OPERATOR_DESC {
  DML_REDUCE_FUNCTION   Function;
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
};

Member

Function

Typ: DML_REDUCE_FUNCTION

Gibt die Reduzierungsfunktion an, die auf die Eingabe angewendet werden soll.

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 Reduzierung auf 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 mit InputTensor.Sizes übereinstimmen, 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, entlang denen reduziert werden soll. Die Werte müssen im Bereich liegen [0, InputTensor.DimensionCount - 1].

Beispiele

In den folgenden Beispielen wird derselbe zweidimensionale Eingabe tensor verwendet.

InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
 [3, 0, 4],
 [2, 4, 2]]

Beispiel 1: Anwenden der Summe auf Spalten

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6,  // sum({1, 3, 2})
  6,  // sum({2, 0, 4})
  9]] // sum({3, 4, 2})

Beispiel 2: Anwenden der Summe auf Zeilen

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
 [7], // sum({3, 0, 4})
 [8]] // sum({2, 4, 2})

Beispiel 3.Anwenden der Summe auf alle Achsen (den gesamten Tensor)

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]]  // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_1_0eingeführt.

Tensoreinschränkungen

  • Die Datentypen für Eingabe- und Ausgabe tensor müssen übereinstimmen, außer bei Verwendung der Funktionen ARGMAX und ARGMIN, die immer einen integralen Datentyp ausgeben.
  • Die Ausgabegrößen müssen mit den Eingabegrößen übereinstimmen, mit Ausnahme der reduzierten Achsen, die 1 sein müssen.

Tensorunterstützung nach Funktion

ARGMIN und ARGMAX

DML_FEATURE_LEVEL_4_1 und höher
Tensor Variante 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 Variante 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

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Ausgabe 4 UINT32

DML_FEATURE_LEVEL_1_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
OutputTensor Ausgabe 4 UINT32

MITTELWERT, L2, LOG_SUM und LOG_SUM_EXP

DML_FEATURE_LEVEL_3_0 und höher
Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16
DML_FEATURE_LEVEL_1_0 und höher
Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
OutputTensor Ausgabe 4 FLOAT32, FLOAT16

L1 und SUM_SQUARE

DML_FEATURE_LEVEL_5_0 und höher
Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_3_0 und höher

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

DML_FEATURE_LEVEL_1_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
OutputTensor Ausgabe 4 FLOAT32, FLOAT16

MIN und MAX

DML_FEATURE_LEVEL_5_0 und höher
Tensor Variante 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 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Ausgabe 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
OutputTensor Ausgabe 4 FLOAT32, FLOAT16

MULTIPLIZIEREN und SUMME

DML_FEATURE_LEVEL_5_0 und höher
Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_3_0 und höher

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

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Ausgabe 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
OutputTensor Ausgabe 4 FLOAT32, FLOAT16

Anforderungen

Anforderung Wert
Header directml.h

Weitere Informationen

Die Featureebene 3_0 führte diese eigenständigen Operatoren ein, die die mit DML_REDUCE_FUNCTION_ARGMAX und DML_REDUCE_FUNCTION_ARGMIN verfügbaren Funktionen ablösen.