Freigeben über


DML_TOP_K1_OPERATOR_DESC Struktur (directml.h)

Wählt die größten oder kleinsten K- Elemente aus jeder Sequenz entlang einer Achse des InputTensor-aus und gibt die Werte und Indizes dieser Elemente im OutputValueTensor bzw. OutputIndexTensor-zurück. Eine Sequenz bezieht sich auf eine der Sätze von Elementen, die entlang der Axis Dimension des InputTensor-vorhanden sind.

Die Wahl, ob die größten K-Elemente oder die kleinsten K-Elemente ausgewählt werden sollen, können mit AxisDirectiongesteuert werden.

Syntax

struct DML_TOP_K1_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputValueTensor;
  const DML_TENSOR_DESC *OutputIndexTensor;
  UINT                  Axis;
  UINT                  K;
  DML_AXIS_DIRECTION    AxisDirection;
};

Angehörige

InputTensor

Typ: DML_TENSOR_DESC*

Der Eingabe-Tensor, der Elemente enthält, die ausgewählt werden sollen.

OutputValueTensor

Typ: DML_TENSOR_DESC*

Der Ausgabe-Tensor zum Schreiben der Werte der obersten K--Elemente in. Die oberen K- Elemente werden basierend darauf ausgewählt, ob sie die größte oder kleinste sind, je nach dem Wert von AxisDirection. Dieser Tensor muss Größen aufweisen, die dem InputTensor-entsprechen, außer für die durch den Parameter Axis angegebene Dimension, die eine Größe aufweisen muss, die Kentspricht.

Die K- Werte, die aus den einzelnen Eingabesequenzen ausgewählt sind, werden garantiert absteigend (größter bis kleinster) sortiert, wenn AxisDirection-DML_AXIS_DIRECTION_DECREASINGist. Andernfalls ist das Gegenteil wahr, und die ausgewählten Werte werden garantiert aufsteigend sortiert (kleinste bis größte).

OutputIndexTensor

Typ: DML_TENSOR_DESC*

Der Ausgabe-Tensor zum Schreiben der Indizes der obersten K Elemente in. Dieser Tensor muss Größen aufweisen, die dem InputTensor-entsprechen, außer für die durch den Parameter Axis angegebene Dimension, die eine Größe aufweisen muss, die Kentspricht.

Die in diesem Tensor zurückgegebenen Indizes werden relativ zum Anfang ihrer Sequenz gemessen (im Gegensatz zum Anfang des Tensors). Beispielsweise bezieht sich ein Index von 0 immer auf das erste Element für alle Sequenzen in einer Achse.

In Fällen, in denen zwei oder mehr Elemente im top-K denselben Wert aufweisen (d. h. wenn eine Verknüpfung vorhanden ist), werden die Indizes beider Elemente eingeschlossen und werden garantiert durch aufsteigenden Elementindex sortiert. Beachten Sie, dass dies unabhängig vom Wert AxisDirectiongilt.

Axis

Typ: UINT-

Der Index der Dimension, über die Elemente ausgewählt werden sollen. Dieser Wert muss kleiner als die DimensionCount- des InputTensor-sein.

K

Typ: UINT-

Die Anzahl der auszuwählenden Elemente. K muss größer als 0 sein, aber kleiner als die Anzahl der Elemente im InputTensor entlang der dimension, die durch Axisangegeben wird.

AxisDirection

Typ: DML_AXIS_DIRECTION

Ein Wert aus der DML_AXIS_DIRECTION-Aufzählung. Wenn dieser Operator auf DML_AXIS_DIRECTION_INCREASINGfestgelegt ist, gibt dieser Operator die kleinstenK- Elemente zurück, um den Wert zu erhöhen. Andernfalls wird die größtenK- Elemente in abnehmender Reihenfolge zurückgegeben.

Beispiele

Beispiel 1

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0,  1, 10, 11],
   [ 3,  2,  9,  8],
   [ 4,  5,  6,  7]]]]

Axis: 3
K:    2
AxisDirection: DML_AXIS_DIRECTION_DECREASING
   
OutputValueTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[11, 10],
   [ 9,  8],
   [ 7,  6]]]]

OutputIndexTensor: (Sizes:{1,1,3,2}, DataType:UINT32)
[[[[3, 2],
   [2, 3],
   [3, 2]]]]

Beispiel 2. Verwenden einer anderen Achse

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0,  1, 10, 11],
   [ 3,  2,  9,  8],
   [ 4,  5,  6,  7]]]]

Axis: 2
K:    2
AxisDirection: DML_AXIS_DIRECTION_DECREASING
   
OutputValueTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[[[ 4,  5, 10, 11],
   [ 3,  2,  9,  8]]]]

OutputIndexTensor: (Sizes:{1,1,2,4}, DataType:UINT32)
[[[[2, 2, 0, 0],
   [1, 1, 1, 1]]]]

Beispiel 3. Verknüpfte Werte

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

Axis: 3
K:    3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
   
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[3, 2, 2],
   [5, 5, 4],
   [6, 6, 6]]]]

OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[3, 1, 2],
   [2, 3, 1],
   [0, 1, 2]]]]

Beispiel 4. Erhöhen der Achsenrichtung

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

Axis: 3
K:    3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
   
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[1, 2, 2],
   [3, 4, 5],
   [6, 6, 6]]]]

OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[0, 1, 2],
   [0, 1, 2],
   [0, 1, 2]]]]

Bemerkungen

Wenn AxisDirection- auf DML_AXIS_DIRECTION_DECREASINGfestgelegt ist, entspricht dieser Operator DML_TOP_K_OPERATOR_DESC.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_1eingeführt.

Tensoreinschränkungen

  • InputTensor-, OutputIndexTensor-und OutputValueTensor- müssen denselben DimensionCount-aufweisen.
  • InputTensor- und OutputValueTensor- müssen denselben Datentyphaben.

Tensorunterstützung

DML_FEATURE_LEVEL_5_0 und höher

Tensor Art Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputValueTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputIndexTensor Ausgabe 1 bis 8 UINT64, UINT32

DML_FEATURE_LEVEL_3_1 und höher

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

DML_FEATURE_LEVEL_2_1 und höher

Tensor Art Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputValueTensor Ausgabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputIndexTensor Ausgabe 4 UINT32

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10 Build 20348
mindestens unterstützte Server- Windows 10 Build 20348
Header- directml.h