DML_SLICE_OPERATOR_DESC-Struktur (directml.h)
Extrahiert einen einzelnen Unterbereich (ein "Slice") eines Eingabe tensors.
Die in den Slice kopierten Elemente werden anhand von drei Werten für jede Dimension bestimmt.
- Der Offset markiert das erste Element, das in einer Dimension kopiert werden soll.
- Die Größe markiert die Anzahl der Elemente, die in einer Dimension kopiert werden sollen.
- Der Schritt gibt das Inkrement oder den Schritt des Elements in einer Dimension an.
Die bereitgestellten Offsets, Sizes und Strides dürfen nur Elemente kopieren, die sich innerhalb der Grenzen des Eingabe tensors befinden (Lesevorgänge außerhalb der Grenzen sind nicht zulässig). Die Größen des Slices müssen genau mit den Ausgabe tensorgrößen übereinstimmen. Im Allgemeinen werden die kopierten Elemente wie folgt berechnet.
OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]
Syntax
struct DML_SLICE_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Offsets;
const UINT *Sizes;
const UINT *Strides;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, aus dem Slices extrahiert werden sollen.
OutputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, in den die Datenschnitte geschrieben werden sollen.
DimensionCount
Typ: UINT
Die Anzahl der Dimensionen. Dieses Feld bestimmt die Größe der Arrays Offsets, Sizes und Strides . Dieser Wert muss mit dem DimensionCount der Eingabe- und Ausgabe tensors übereinstimmen. Dieser Wert muss ab zwischen 1 und 8 liegen. DML_FEATURE_LEVEL_3_0
Frühere Featureebenen erfordern einen Wert von 4 oder 5.
Offsets
Typ: _Field_size_(DimensionCount) const UINT*
Ein Array, das den Anfang des Slices entlang jeder Dimension des Eingabe tensors in -Elementen enthält.
Sizes
Typ: _Field_size_(DimensionCount) const UINT*
Ein Array, das die Größe des Slices entlang jeder Dimension in -Elementen enthält. Die Werte in diesem Array müssen mit den im Ausgabe tensor angegebenen Größen übereinstimmen.
Strides
Typ: _Field_size_(DimensionCount) const UINT*
Ein Array, das den Schritt des Slices entlang jeder Dimension des Eingabe tensors in -Elementen enthält. Ein Schritt größer als 1 gibt an, dass Elemente des Eingabe tensors übersprungen werden können (z. B. wählt ein Schritt von 2 jedes zweite Element entlang der Dimension aus).
Beispiele
In den folgenden Beispielen wird derselbe Eingabe tensor verwendet:
InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]]]
Beispiel 1: Zusammenhängender Slice
Offsets = {0, 0, 1, 2}
Sizes = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}
OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7, 8],
[11, 12],
[15, 16]]]]
Beispiel 2: Gespeicherter Slice
Offsets = {0, 0, 1, 0}
Sizes = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}
OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5, 8],
[13, 16]]]]
Hinweise
Eine neuere Version dieses Operators , DML_SLICE1_OPERATOR_DESC, wurde in DML_FEATURE_LEVEL_2_1
eingeführt.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_1_0
eingeführt.
Tensoreinschränkungen
InputTensor und OutputTensor müssen über denselben DataType und DimensionCount verfügen.
Tensorunterstützung
DML_FEATURE_LEVEL_4_1 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 bis 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Ausgabe | 4 bis 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_1_0 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 bis 5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
OutputTensor | Ausgabe | 4 bis 5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
Anforderungen
Anforderung | Wert |
---|---|
Header | directml.h |