Partager via


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