Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |