Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Extrait les blocs locaux glissants d’un tensor d’entrée par lot.
Considérez un InputTensor avec une forme (N,C,*), où * est un nombre arbitraire de dimensions spatiales (<=6). L’opération aplatit chaque bloc WindowSize glissant dans le InputTensor dans une colonne d’un OutputTensor. OutputTensor est un tensoriel 3D contenant des blocs locaux glissants, par exemple, des correctifs d’images, de forme (N,C×∏(WindowSizes),BlockCount), où N est une dimension de lot, C×∏(WindowSizes) est le nombre total de valeurs dans une fenêtre (une fenêtre a des emplacements spatiaux ∏(WindowSizes) chacun contenant un vecteur canalisé C), et BlockCount est le nombre total de blocs. Les arguments doivent satisfaire :
BlocksPerDimension[d] = ( ( SpatialSize[d] + StartPadding[d] + EndPadding[d] - Dilatations[d] * (WindowSizes[d] - 1) - 1 ) / stride[d] ) + 1
BlockCount = ∏d BlocksPerDimension[d]
Où :
- SpatialSize est formé par les dimensions spatiales de l’entrée (*)
- <0 = d < DimensionCount
La sortie d’indexation à la dernière dimension (dimension de colonne) donne toutes les valeurs d’un certain bloc.
Les arguments StartPadding, EndPadding, Strides et Dilations spécifient la façon dont les blocs glissants sont récupérés.
Important
Cette API est disponible dans le cadre du package redistribuable autonome DirectML (voir Microsoft.AI.DirectML version 1.15.1 et ultérieures. Consultez également l’historique des versions DirectML.
Syntaxe
struct DML_UNFOLD_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
UINT DimensionCount;
_Field_size_(DimensionCount) const UINT* WindowSizes;
_Field_size_(DimensionCount) const UINT* Strides;
_Field_size_(DimensionCount) const UINT* Dilations;
_Field_size_(DimensionCount) const UINT* StartPadding;
_Field_size_(DimensionCount) const UINT* EndPadding;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Capteur d’entrée à partir duquel lire.
OutputTensor
Type : const DML_TENSOR_DESC*
Le tensoriel de sortie dans lequel écrire les résultats.
DimensionCount
Type : UINT
Dimensions spatiales d’InputTensor.
DimensionCount doit se trouver dans la plage [1, 6].
WindowSizes
Type : _Field_size_(DimensionCount) const UINT*
Taille de la fenêtre glissante.
Strides
Type : _Field_size_(DimensionCount) const UINT*
Le pas de la fenêtre glissante (avec des dimensions WindowSizes) dans les dimensions spatiales d’entrée. Elles sont séparées des pas de capteurs inclus dans DML_TENSOR_DESC. Taille d’étape des correctifs extraits.
Dilations
Type : _Field_size_(DimensionCount) const UINT*
Les dilations de la fenêtre glissante (avec dimensions WindowSizes) dans les dimensions spatiales d’entrée, en mettant à l’échelle l’espace entre les points du noyau. Dilations du correctif extrait.
StartPadding
Type : _Field_size_(DimensionCount) const UINT*
Tableau contenant la quantité de remplissage zéro implicite à appliquer au début de chaque dimension spatiale d’InputTensor. Démarrez le remplissage du capteur source.
EndPadding
Type : _Field_size_(DimensionCount) const UINT*
Tableau contenant la quantité de remplissage implicite zéro à appliquer à la fin de chaque dimension spatiale d’InputTensor. Remplissage final du capteur source.
Exemples
Exemple 1.
1 canal se déroule.
InputTensor: (Sizes:{1, 1, 5, 5}, DataType:FLOAT32)
[[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 9, 9}, DataType:FLOAT32)
[[[ 0., 1., 2., 5., 6., 7., 10., 11., 12.],
[ 1., 2., 3., 6., 7., 8., 11., 12., 13.],
[ 2., 3., 4., 7., 8., 9., 12., 13., 14.],
[ 5., 6., 7., 10., 11., 12., 15., 16., 17.],
[ 6., 7., 8., 11., 12., 13., 16., 17., 18.],
[ 7., 8., 9., 12., 13., 14., 17., 18., 19.],
[10., 11., 12., 15., 16., 17., 20., 21., 22.],
[11., 12., 13., 16., 17., 18., 21., 22., 23.],
[12., 13., 14., 17., 18., 19., 22., 23., 24.]]]
Exemple 2.
Pliage à 1 canal, plié.
InputTensor: (Sizes:{1, 1, 5, 5}, DataType:FLOAT32)
[[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 9, 15}, DataType:FLOAT32)
[[[ 0., 0., 0., 0., 1., 2., 5., 6., 7., 10., 11., 12., 15., 16., 17.],
[ 0., 0., 0., 1., 2., 3., 6., 7., 8., 11., 12., 13., 16., 17., 18.],
[ 0., 0., 0., 2., 3., 4., 7., 8., 9., 12., 13., 14., 17., 18., 19.],
[ 0., 1., 2., 5., 6., 7., 10., 11., 12., 15., 16., 17., 20., 21., 22.],
[ 1., 2., 3., 6., 7., 8., 11., 12., 13., 16., 17., 18., 21., 22., 23.],
[ 2., 3., 4., 7., 8., 9., 12., 13., 14., 17., 18., 19., 22., 23., 24.],
[ 5., 6., 7., 10., 11., 12., 15., 16., 17., 20., 21., 22., 0., 0., 0.],
[ 6., 7., 8., 11., 12., 13., 16., 17., 18., 21., 22., 23., 0., 0., 0.],
[ 7., 8., 9., 12., 13., 14., 17., 18., 19., 22., 23., 24., 0., 0., 0.]]]
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_6_4.
Contraintes Tensor
InputTensor et OutputTensor doivent avoir le même DimensionCount.
Prise en charge de Tensor
| Tenseur | Genre | Nombres de dimensions pris en charge | Types de données pris en charge |
|---|---|---|---|
| InputTensor | Entrée | 3 à 8 | |
| Tenseur de sortie | Sortie | 3 à 8 |
Spécifications
| En-tête | directml.h |