structure DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC (directml.h)
Inverse les éléments d’une ou plusieurs sous-séquences d’un tenseur. L’ensemble de sous-séquences à inverser est choisi en fonction des longueurs d’axe et de séquence fournies.
Syntaxe
struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *SequenceLengthsTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur d’entrée contenant des éléments à inverser.
SequenceLengthsTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant une valeur pour chaque sous-séquence à inverser, indiquant la longueur dans les éléments de cette sous-séquence. Seuls les éléments de la longueur de la sous-séquence sont inversés ; les éléments restants le long de cet axe sont copiés dans la sortie inchangée.
Ce tenseur doit avoir un nombre de dimensions et des tailles égales à inputTensor, à l’exception de la dimension spécifiée par le paramètre Axis . La taille de la dimension Axe doit être 1. Par exemple, si le InputTensor a des tailles de {2,3,4,5}
, et que Axis a la valeur 1, les tailles du SequenceLengthsTensor doivent être {2,1,4,5}
.
Si la longueur d’une sous-séquence dépasse le nombre maximal d’éléments le long de cet axe, cet opérateur se comporte comme si la valeur était limitée au maximum.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie dans lequel écrire les résultats. Ce tenseur doit avoir les mêmes tailles et le même type de données que le inputTensor.
Axis
Type : UINT
Index de la dimension sur laquelle inverser les éléments. Cette valeur doit être inférieure à dimensionCount de l’inputTensor.
Exemples
Exemple 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]]]]
Exemple 2. Marche arrière le long d’un autre axe
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]]]]
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_1
.
Contraintes tensoriels
- InputTensor, OutputTensor et SequenceLengthsTensor doivent avoir le même DimensionCount.
- InputTensor et OutputTensor doivent avoir le même DataType.
Prise en charge de Tensor
DML_FEATURE_LEVEL_5_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
SequenceLengthsTensor | Entrée | 1 à 8 | UINT64, UINT32 |
OutputTensor | Output | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_4_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
SequenceLengthsTensor | Entrée | 1 à 8 | UINT32 |
OutputTensor | Output | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 à 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
SequenceLengthsTensor | Entrée | 4 à 5 | UINT32 |
OutputTensor | Output | 4 à 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
SequenceLengthsTensor | Entrée | 4 | UINT32 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Spécifications
En-tête | directml.h |