Partager via


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