Partager via


structure DML_MAX_POOLING_GRAD_OPERATOR_DESC (directml.h)

Calcule les gradients de backpropagation pour le regroupement maximal (voir DML_MAX_POOLING2_OPERATOR_DESC).

Considérez un DML_MAX_POOLING2_OPERATOR_DESC 2x2 sans remplissage ni dilatations et une foulée de 1, ce qui effectue ce qui suit.

InputTensor             OutputTensor    IndicesTensor
[[1, 2, 3],   MaxPool    [[4, 4],        [[4, 4],
 [2, 4, 2],     -->       [6, 7]]         [7, 8]]
 [5, 6, 7]]

Le plus grand élément de chaque fenêtre 2x2 dans le tenseur d’entrée produit un élément de la sortie. Vous trouverez ci-dessous un exemple de sortie de DML_MAX_POOLING_GRAD_OPERATOR_DESC, en fonction de paramètres similaires.

InputTensor   InputGradientTensor            OutputGradientTensor
[[1, 2, 3],       [[1, 2],     MaxPoolGrad   [[0, 0, 0],
 [2, 4, 2],        [4, 5]]         -->        [0, 3, 0],
 [5, 6, 7]]                                   [0, 4, 5]]

En effet, cet opérateur utilise inputTensor pour déterminer l’index du plus grand élément de chaque fenêtre et distribue les valeurs d’InputGradientTensor dans le OutputGradientTensor en fonction de ces index. Lorsque les index se chevauchent, les valeurs sont additionnées. Tous les éléments de sortie non référencés sont mis à zéro.

Dans le cas d’une égalité (où plusieurs éléments d’une fenêtre ont la même valeur maximale), l’élément avec l’index d’élément logique le plus bas est choisi.

Syntaxe

struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *WindowSize;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  const UINT            *Dilations;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Tenseur de fonctionnalité d’entrée. Il s’agit généralement du même tenseur que celui fourni comme inputTensor pour DML_MAX_POOLING2_OPERATOR_DESC dans la passe avant.

InputGradientTensor

Type : const DML_TENSOR_DESC*

Tenseur de dégradé entrant. Cela est généralement obtenu à partir de la sortie de backpropagation d’une couche précédente. En règle générale, ce tenseur a les mêmes tailles que la sortie du DML_MAX_POOLING2_OPERATOR_DESC correspondant dans la passe avant.

OutputGradientTensor

Type : const DML_TENSOR_DESC*

Tenseur de sortie contenant les dégradés backpropagés. En règle générale, ce tenseur a les mêmes tailles que l’entrée du DML_MAX_POOLING2_OPERATOR_DESC correspondant dans la passe avant.

DimensionCount

Type : UINT

Nombre d’éléments dans les tableaux Strides, WindowSize, StartPadding, EndPadding et Dilations . Cette valeur doit être égale au nombre de dimensions spatiales (DimensionCount d’InputTensor - 2). Comme cet opérateur prend uniquement en charge les tenseurs 4D, la seule valeur valide pour ce paramètre est 2.

Strides

Type : _Field_size_(DimensionCount) const UINT*

Consultez Foulées dans DML_MAX_POOLING2_OPERATOR_DESC.

WindowSize

Type : _Field_size_(DimensionCount) const UINT*

Consultez WindowSize dans DML_MAX_POOLING2_OPERATOR_DESC.

StartPadding

Type : _Field_size_(DimensionCount) const UINT*

Consultez StartPadding dans DML_MAX_POOLING2_OPERATOR_DESC.

EndPadding

Type : _Field_size_(DimensionCount) const UINT*

Consultez EndPadding dans DML_MAX_POOLING2_OPERATOR_DESC.

Dilations

Type : _Field_size_(DimensionCount) const UINT*

Voir Dilatations dans DML_MAX_POOLING2_OPERATOR_DESC.

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_3_0.

Contraintes tensoriels

  • InputGradientTensor, InputTensor et OutputGradientTensor doivent avoir les mêmes DataType et DimensionCount.
  • InputTensor et OutputGradientTensor doivent avoir les mêmes tailles.

Prise en charge de Tensor

DML_FEATURE_LEVEL_4_0 et versions ultérieures

Tenseur Type Dimensions Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4 à 5 FLOAT32, FLOAT16
InputGradientTensor Entrée { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } 4 à 5 FLOAT32, FLOAT16
OutputGradientTensor Output { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4 à 5 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_3_0 et versions ultérieures

Tenseur Type Dimensions Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16
InputGradientTensor Entrée { BatchCount, ChannelCount, OutputHeight, OutputWidth } 4 FLOAT32, FLOAT16
OutputGradientTensor Output { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16

Spécifications

   
Client minimal pris en charge Windows 10 Build 20348
Serveur minimal pris en charge Windows 10 Build 20348
En-tête directml.h