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 |