DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC structure (directml.h)
Calcule les gradients de rétropropagation pour le regroupement moyen (voir DML_AVERAGE_POOLING_OPERATOR_DESC).
Considérez un DML_AVERAGE_POOLING_OPERATOR_DESC 2x2, sans remplissage et une foulée de 1, qui effectue les opérations suivantes.
InputTensor OutputTensor
[[[[1, 2, 3], AvgPool [[[[3, 4],
[4, 5, 6], --> [6, 7]]]]
[7, 8, 9]]]]
Chaque fenêtre 2x2 dans le tenseur d’entrée produit en moyenne un élément de la sortie (lecture des zéros pour les éléments au-delà du bord). Voici un exemple de sortie de DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC des paramètres similaires.
InputGradientTensor OutputGradientTensor
[[[[1, 2], AvgPoolGrad [[[[0.25, 0.75, 0.5],
[3, 4]]]] --> [ 1, 2.5, 1.5],
[0.75, 1.75, 1]]]]
Notez que les valeurs de l’élément OutputGradientTensor représentent la contributions pondérée de cet élément pour l’opérateur OutputTensor pendant l’opérateur de DML_AVERAGE_POOLING_OPERATOR_DESC d’origine.
Syntaxe
struct DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC {
const DML_TENSOR_DESC *InputGradientTensor;
const DML_TENSOR_DESC *OutputGradientTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *WindowSize;
const UINT *StartPadding;
const UINT *EndPadding;
BOOL IncludePadding;
};
Membres
InputGradientTensor
Type : const DML_TENSOR_DESC*
Tenseur de gradient entrant. Cela est généralement obtenu à partir de la sortie de la rétropropagation d’une couche précédente. En règle générale, ce tenseur a les mêmes tailles que la sortie du DML_AVERAGE_POOLING_OPERATOR_DESC correspondant dans la passe avant.
OutputGradientTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie contenant les dégradés rétropropagés. En règle générale, ce tenseur a les mêmes tailles que l’entrée du DML_AVERAGE_POOLING_OPERATOR_DESC correspondant dans la passe avant.
DimensionCount
Type : UINT
Nombre d’éléments dans les tableaux Strides, WindowSize, StartPadding et EndPadding . Cette valeur doit être égale au nombre de dimensions spatiales. Le nombre de dimensions spatiales est de 2 si des tenseurs 4D sont fournis, ou de 3 si des tenseurs 5D sont fournis.
Strides
Type : _Field_size_(DimensionCount) const UINT*
Voir Strides in DML_AVERAGE_POOLING_OPERATOR_DESC.
WindowSize
Type : _Field_size_(DimensionCount) const UINT*
Consultez WindowSize dans DML_AVERAGE_POOLING_OPERATOR_DESC.
StartPadding
Type : _Field_size_(DimensionCount) const UINT*
Consultez StartPadding dans DML_AVERAGE_POOLING_OPERATOR_DESC.
EndPadding
Type : _Field_size_(DimensionCount) const UINT*
Consultez EndPadding dans DML_AVERAGE_POOLING_OPERATOR_DESC.
IncludePadding
Type : BOOL
Consultez IncludePadding dans DML_AVERAGE_POOLING_OPERATOR_DESC.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_3_0
.
Contraintes tensoriels
InputGradientTensor et OutputGradientTensor doivent avoir les mêmes DataType et DimensionCount.
Prise en charge des tenseurs
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputGradientTensor | Entrée | 4 à 5 | FLOAT32, FLOAT16 |
OutputGradientTensor | Sortie | 4 à 5 | FLOAT32, FLOAT16 |
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 Build 20348 |
Serveur minimal pris en charge | Windows 10 Build 20348 |
En-tête | directml.h |