Freigeben über


DML_TOP_K_OPERATOR_DESC-Struktur (directml.h)

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

Syntax

struct DML_TOP_K_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputValueTensor;
  const DML_TENSOR_DESC *OutputIndexTensor;
  UINT                  Axis;
  UINT                  K;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Eingabe tensor, der die auszuwählenden Elemente enthält.

OutputValueTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe tensor, in den die Werte der obersten K-Elemente geschrieben werden sollen. Dieser Tensor muss größen aufweisen, die dem InputTensorentsprechen, mit Ausnahme der vom Axis-Parameter angegebenen Dimension, die eine Größe von K aufweisen muss.

Die aus jeder Eingabesequenz ausgewählten K-Werte werden garantiert absteigend sortiert (größter bis kleinster Wert).

OutputIndexTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe tensor, in den die Indizes der obersten K-Elemente geschrieben werden sollen. Dieser Tensor muss größen aufweisen, die dem InputTensorentsprechen, mit Ausnahme der vom Axis-Parameter angegebenen Dimension, die eine Größe von K aufweisen muss.

Die in diesem Tensor zurückgegebenen Indizes werden relativ zum Anfang ihrer Sequenz (im Gegensatz zum Anfang des Tensors) gemessen. 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 in der obersten K denselben Wert haben (d. h. wenn eine Bindung vorhanden ist), werden die Indizes beider Elemente eingeschlossen und werden garantiert nach einem aufsteigenden Elementindex sortiert.

Axis

Typ: UINT

Der Index der Dimension, für die Elemente ausgewählt werden sollen. Dieser Wert muss kleiner als der DimensionCount-Wert 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 von Axis angegebenen Dimension.

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
   
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
   
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
   
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]]]]

Hinweise

Eine neuere Version dieses Operators , DML_TOP_K1_OPERATOR_DESC, wurde in DML_FEATURE_LEVEL_2_1eingeführt.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_0eingeführt.

Tensoreinschränkungen

  • InputTensor, OutputIndexTensor und OutputValueTensor müssen über dieselbe DimensionCount verfügen.
  • InputTensor und OutputValueTensor müssen denselben Datentyp aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_5_0 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
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 Typ 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 Typ 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

DML_FEATURE_LEVEL_2_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16
OutputValueTensor Ausgabe 4 FLOAT32, FLOAT16
OutputIndexTensor Ausgabe 4 UINT32

Anforderungen

   
Kopfzeile directml.h