Partager via


Structure DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC (directml.h)

Moyenne des valeurs quantifiées parmi les éléments de la fenêtre glissante sur le tenseur d’entrée. Cet opérateur revient mathématiquement à déquantifier les entrées, puis à effectuer un regroupement par moyenne, puis à quantifier la sortie.

Fonction déquatifier

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Fonction quantifier

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Important

Cette API est disponible dans le cadre du package redistribuable autonome DirectML (voir Microsoft.AI.DirectML version 1.13 et ultérieures). Consultez également l’historique des versions DirectML.

Syntaxe

struct DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* InputScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
    const DML_TENSOR_DESC* OutputScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
    const DML_TENSOR_DESC* OutputTensor;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const UINT* Strides;
    _Field_size_(DimensionCount) const UINT* WindowSize;
    _Field_size_(DimensionCount) const UINT* StartPadding;
    _Field_size_(DimensionCount) const UINT* EndPadding;
    _Field_size_(DimensionCount) const UINT* Dilations;
    BOOL IncludePadding;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Un tenseur d’entrée de Sizes{ BatchCount, ChannelCount, Height, Width } pour 4D et { BatchCount, ChannelCount, Depth, Height, Weight } pour 5D.

InputScaleTensor

Type : const DML_TENSOR_DESC*

Un tenseur contenant les données d’échelle de InputTensor. Les dimensions attendues de InputScaleTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, ChannelCount, 1, 1 } si la quantification par canal est requise. Ces valeurs d’échelle sont utilisées pour déquantifier les valeurs de InputTensor.

InputZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un tenseur facultatif contenant les données de point zéro de InputTensor. Les dimensions attendues de InputZeroPointTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, ChannelCount, 1, 1 } si la quantification par canal est requise. Ces valeurs de point zéro sont utilisées pour déquantifier les valeurs de InputTensor.

OutputScaleTensor

Type : const DML_TENSOR_DESC*

Un tenseur contenant les données d’échelle de OutputTensor. Les dimensions attendues de OutputScaleTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, ChannelCount, 1, 1 } si la quantification par canal est requise. Ces valeurs d’échelle sont utilisées pour quantifier les valeurs de OutputTensor.

OutputZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un tenseur facultatif contenant les données de point zéro de OutputTensor. Les dimensions attendues de OutputZeroPointTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, ChannelCount, 1, 1 } si la quantification par canal est requise. Cette valeur de point zéro est utilisée pour quantifier les valeurs de OutputTensor.

OutputTensor

Type : const DML_TENSOR_DESC*

Description du tenseur de sortie. Les tailles du tenseur de sortie peuvent être calculées comme suit.

OutputTensor->Sizes[0] = InputTensor->Sizes[0];
OutputTensor->Sizes[1] = InputTensor->Sizes[1];

for (UINT i = 0; i < DimensionCount; ++i) {
  UINT PaddedSize = InputTensor->Sizes[i + 2] + StartPadding[i] + EndPadding[i];
  OutputTensor->Sizes[i + 2] = (PaddedSize - WindowSizes[i]) / Strides[i] + 1;
}

DimensionCount

Type : UINT

Nombre de dimensions spatiales du tenseur d’entrée InputTensor, qui correspond également au nombre de dimensions de la fenêtre glissante WindowSize. Cette valeur détermine également la taille des tableaux Strides, StartPadding et EndPadding . Elle doit être définie sur 2 lorsque InputTensor est en 4D et sur 3 lorsqu’il s’agit d’un tenseur 5D.

Strides

Type : _Field_size_(DimensionCount) const UINT*

Les strides pour les dimensions de fenêtre glissante de tailles { Height, Width } lorsque DimensionCount est défini sur 2, ou { Depth, Height, Width } lorsqu’ils sont définis sur 3.

WindowSize

Type : _Field_size_(DimensionCount) const UINT*

Dimensions de la fenêtre glissante dans { Height, Width } lorsque DimensionCount est défini sur 2, ou { Depth, Height, Width } lorsqu’elle est définie sur 3.

StartPadding

Type : _Field_size_(DimensionCount) const UINT*

Nombre d’éléments de remplissage à appliquer au début de chaque dimension spatiale du tenseur d’entrée InputTensor. Les valeurs se trouvent dans { Height, Width } lorsque DimensionCount est défini sur 2 ou { Depth, Height, Width } quand la valeur est 3.

EndPadding

Type : _Field_size_(DimensionCount) const UINT*

Nombre d’éléments de remplissage à appliquer à la fin de chaque dimension spatiale du tenseur d’entrée InputTensor. Les valeurs se trouvent dans { Height, Width } lorsque DimensionCount est défini sur 2 ou { Depth, Height, Width } quand la valeur est 3.

Dilations

Type : _Field_size_(DimensionCount) const UINT*

Valeurs de chaque dimension spatiale du tenseur d’entrée InputTensor par laquelle un élément de la fenêtre glissante est sélectionné pour chaque élément de cette valeur. Les valeurs se trouvent dans { Height, Width } lorsque DimensionCount est défini sur 2 ou { Depth, Height, Width } quand la valeur est 3.

IncludePadding

Type : BOOL

Indique s’il faut inclure les éléments de remplissage autour des arêtes spatiales lors du calcul de la valeur moyenne sur tous les éléments de la fenêtre glissante. Lorsque la valeur est définie sur FALSE, les éléments de remplissage ne sont pas comptabilisés dans le cadre de la valeur du diviseur du calcul de la moyenne.

Disponibilité

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

Contraintes de tenseur

  • InputTensor et OutputTensor doivent avoir le même DimensionCount.
  • InputTensor et InputZeroPointTensor doivent avoir le même DataType.
  • OutputTensor et OutputZeroPointTensor doivent avoir le même DataType.

Prise en charge des tenseurs

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Input 4 à 5 INT8, UINT8
InputScaleTensor Input 1 à 5 FLOAT32
InputZeroPointTensor Entrée facultative 1 à 5 INT8, UINT8
OutputScaleTensor Input 1 à 5 FLOAT32
OutputZeroPointTensor Entrée facultative 1 à 5 INT8, UINT8
OutputTensor Sortie 4 à 5 INT8, UINT8

Spécifications

   
En-tête directml.h