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_1
eingefü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 |