Share via


DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC-Struktur (directml.h)

Kehrt die Elemente einer oder mehrerer Untersequenzen eines Tensors um. Der Satz der umzukehrenden Teilsequenzen wird basierend auf der angegebenen Achsen- und Sequenzlänge ausgewählt.

Syntax

struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *SequenceLengthsTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Eingabe tensor, der umzukehrende Elemente enthält.

SequenceLengthsTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der einen Wert für jede umzukehrende Untersequenz enthält und die Länge in Elementen dieser Untersequenz angibt. Nur die Elemente innerhalb der Länge der Untersequenz werden umgekehrt; die verbleibenden Elemente entlang dieser Achse werden unverändert in die Ausgabe kopiert.

Dieser Tensor muss die Dimensionsanzahl und größen aufweisen, die dem InputTensor entsprechen, mit Ausnahme der vom Axis-Parameter angegebenen Dimension. Die Größe der Achsendimension muss 1 sein. Wenn der InputTensor z. B. die Größe hat {2,3,4,5}und Achse 1 ist, muss die Größe des SequenceLengthsTensor sein{2,1,4,5}.

Wenn die Länge einer Untersequenz die maximale Anzahl von Elementen entlang dieser Achse überschreitet, verhält sich dieser Operator so, als würde der Wert auf das Maximum geklemmt.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe tensor, in den die Ergebnisse geschrieben werden sollen. Dieser Tensor muss die gleichen Größen und datentypen wie der InputTensor aufweisen.

Axis

Typ: UINT

Der Index der Dimension, um die Elemente umgekehrt werden sollen. Dieser Wert muss kleiner als der DimensionCount-Wert des InputTensor sein.

Beispiele

Beispiel 1

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1,  2,  3,  4],
   [5,  6,  7,  8],
   [9, 10, 11, 12]]]]
   
SequenceTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[2],
   [4],
   [3]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2,  1,  3,  4],
   [ 8,  7,  6,  5],
   [11, 10,  9, 12]]]]

Beispiel 2: Umkehren entlang einer anderen Achse

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1,  2,  3,  4],
   [5,  6,  7,  8],
   [9, 10, 11, 12]]]]
   
SequenceTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[2, 3, 1, 0]]]]

Axis: 2

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[5, 10,  3,  4], // Notice that sequence lengths of 1 and 0 are effective nops
   [1,  6,  7,  8],
   [9,  2, 11, 12]]]]

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_1eingeführt.

Tensoreinschränkungen

  • InputTensor, OutputTensor und SequenceLengthsTensor müssen über dieselbe DimensionCount verfügen.
  • InputTensor und OutputTensor 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 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
SequenceLengthsTensor Eingabe 1 bis 8 UINT64, UINT32
OutputTensor Ausgabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_4_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
SequenceLengthsTensor Eingabe 1 bis 8 UINT32
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 bis 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
SequenceLengthsTensor Eingabe 4 bis 5 UINT32
OutputTensor Ausgabe 4 bis 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

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
SequenceLengthsTensor Eingabe 4 UINT32
OutputTensor Ausgabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

Anforderungen

   
Kopfzeile directml.h