Partager via


structure DML_SLICE_OPERATOR_DESC (directml.h)

Extrait une sous-région unique (une « tranche ») d’un tenseur d’entrée.

Les éléments copiés dans la tranche sont déterminés à l’aide de trois valeurs pour chaque dimension.

  • Le décalage marque le premier élément à copier dans une dimension.
  • La taille marque le nombre d’éléments à copier dans une dimension.
  • La foulée indique l’incrément ou l’étape de l’élément dans une dimension.

Les offsets, tailles et foulées fournis doivent uniquement copier les éléments qui se trouvent dans les limites du tenseur d’entrée (les lectures hors limites ne sont pas autorisées). Les tailles de la tranche doivent correspondre exactement aux tailles de tenseur de sortie. En général, les éléments copiés sont calculés comme suit.

OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]

Syntaxe

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;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Tenseur à partir duquel extraire les tranches.

OutputTensor

Type : const DML_TENSOR_DESC*

Tenseur dans lequel écrire les résultats des données segmentées.

DimensionCount

Type : UINT

Nombre de dimensions. Ce champ détermine la taille des tableaux Offsets, Sizes et Strides . Cette valeur doit correspondre au DimensionCount des tenseurs d’entrée et de sortie. Cette valeur doit être comprise entre 1 et 8, inclusivement, à partir de DML_FEATURE_LEVEL_3_0; les niveaux de fonctionnalités antérieurs nécessitent une valeur de 4 ou 5.

Offsets

Type : _Field_size_(DimensionCount) const UINT*

Tableau contenant le début de la tranche le long de chaque dimension du tenseur d’entrée, dans les éléments.

Sizes

Type : _Field_size_(DimensionCount) const UINT*

Tableau contenant la taille de la tranche le long de chaque dimension, dans des éléments. Les valeurs de ce tableau doivent correspondre aux tailles spécifiées dans le tenseur de sortie.

Strides

Type : _Field_size_(DimensionCount) const UINT*

Tableau contenant la foulée de la tranche le long de chaque dimension du tenseur d’entrée, dans les éléments. Une foulée supérieure à 1 indique que les éléments du tenseur d’entrée peuvent être ignorés (par exemple, une foulée de 2 sélectionne chaque élément sur deux le long de la dimension).

Exemples

Les exemples suivants utilisent le même tenseur d’entrée :

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

Exemple 1. Tranche contiguë

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]]]]

Exemple 2. Tranche strided

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]]]]

Remarques

Une version plus récente de cet opérateur, DML_SLICE1_OPERATOR_DESC, a été introduite dans DML_FEATURE_LEVEL_2_1.

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0.

Contraintes tensoriels

InputTensor et OutputTensor doivent avoir les mêmes DataType et DimensionCount.

Prise en charge des tenseurs

DML_FEATURE_LEVEL_4_1 et versions ultérieures

Tenseur Genre 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
OutputTensor Sortie 1 à 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 et versions ultérieures

Tenseur Genre 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
OutputTensor Sortie 1 à 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 et versions ultérieures

Tenseur Genre 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
OutputTensor Sortie 4 à 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_1_0 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée 4 à 5 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensor Sortie 4 à 5 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

Configuration requise

Condition requise Valeur
En-tête directml.h