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