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.
Combine un tableau de correctifs formés à partir d’une fenêtre glissante dans un grand capteur contenant.
Considérez un tensor d’entrée par lot contenant des blocs locaux glissants, par exemple, des correctifs d’images, des formes (N,C×∏(WindowSizes),BlockCount), où N est une dimension de lot, C×∏(WindowSizes) est le nombre de valeurs dans une fenêtre (une fenêtre a ∏(WindowSizes) emplacements spatiaux chacun contenant un vecteur canalisé C), et BlockCount est le nombre total de blocs. Cette opération combine ces blocs locaux dans le grand capteur de sortie de forme (N,C,OutputSize[0],OutputSize[1],...) en additionnant les valeurs qui se chevauchent. 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ù :
- <0 = d < DimensionCount
La taille de OutputSize (la taille de OutputTensor) décrit la forme spatiale du grand capteur contenant les blocs locaux glissants.
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_FOLD_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 être <= 6.
WindowSizes
Type : _Field_size_(DimensionCount) const UINT*
Taille de la fenêtre glissante. Taille du correctif extrait.
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
Pliage à 1 canal.
InputTensor: (Sizes:{1, 9, 4}, 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., 25., 26., 27.],
[28., 29., 30., 31.],
[32., 33., 34., 35.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 0., 5., 13., 9.],
[ 14., 38., 54., 32.],
[ 38., 86., 102., 56.],
[ 26., 57., 65., 35.]]]]
Exemple 2
Un pliage à 1 canal, rembourré.
InputTensor: (Sizes:{1, 9, 8}, 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., 25., 26., 27., 28., 29., 30., 31.],
[32., 33., 34., 35., 36., 37., 38., 39.],
[40., 41., 42., 43., 44., 45., 46., 47.],
[48., 49., 50., 51., 52., 53., 54., 55.],
[56., 57., 58., 59., 60., 61., 62., 63.],
[64., 65., 66., 67., 68., 69., 70., 71.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 26., 70., 102., 60.],
[ 78., 183., 231., 129.],
[ 84., 195., 243., 135.],
[ 82., 182., 214., 116.]]]]
Exemple 3
Un pliage à 2 canaux, rembourré.
InputTensor: (Sizes:{1, 18, 8}, 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., 25., 26., 27., 28., 29., 30., 31.],
[ 32., 33., 34., 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44., 45., 46., 47.],
[ 48., 49., 50., 51., 52., 53., 54., 55.],
[ 56., 57., 58., 59., 60., 61., 62., 63.],
[ 64., 65., 66., 67., 68., 69., 70., 71.],
[ 72., 73., 74., 75., 76., 77., 78., 79.],
[ 80., 81., 82., 83., 84., 85., 86., 87.],
[ 88., 89., 90., 91., 92., 93., 94., 95.],
[ 96., 97., 98., 99., 100., 101., 102., 103.],
[104., 105., 106., 107., 108., 109., 110., 111.],
[112., 113., 114., 115., 116., 117., 118., 119.],
[120., 121., 122., 123., 124., 125., 126., 127.],
[128., 129., 130., 131., 132., 133., 134., 135.],
[136., 137., 138., 139., 140., 141., 142., 143.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 2, 4, 4}, DataType:FLOAT32)
[[[[ 26., 70., 102., 60.],
[ 78., 183., 231., 129.],
[ 84., 195., 243., 135.],
[ 82., 182., 214., 116.]],
[[170., 358., 390., 204.],
[294., 615., 663., 345.],
[300., 627., 675., 351.],
[226., 470., 502., 260.]]]]
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 |