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_1
eingeführt.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_0
eingefü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 |