Freigeben über


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_0Frü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_1eingeführt.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_1_0eingefü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