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.
Moyenne des valeurs quantifiées entre les éléments de la fenêtre glissante sur le capteur d’entrée. Cet opérateur équivaut mathématiquement à déquanter les entrées, puis à effectuer un regroupement moyen, puis à quantifier la sortie.
Dequantize, fonction
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
Quantize, fonction
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 capteur d’entrée de tailles{ BatchCount, ChannelCount, Height, Width } pour 4D et { BatchCount, ChannelCount, Depth, Height, Weight } pour 5D.
InputScaleTensor
Type : const DML_TENSOR_DESC*
Un tensor contenant les données d’échelle InputTensor . Les dimensions attendues d’InputScaleTensor sont { 1, 1, 1, 1 } si la quantisation par tensorisation est requise ou { 1, ChannelCount, 1, 1 } si la quantisation par canal est requise. Ces valeurs d’échelle sont utilisées pour déquanter les valeurs InputTensor .
Remarque
Une valeur d’échelle de 0 entraîne un comportement non défini.
InputZeroPointTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Un tensoriel facultatif contenant les données de point zéro InputTensor . Les dimensions attendues d’InputZeroPointTensor sont { 1, 1, 1, 1 } si la quantisation par tensorisation est requise ou { 1, ChannelCount, 1, 1 } si la quantisation par canal est requise. Ces valeurs de point zéro sont utilisées pour déquanter les valeurs InputTensor .
OutputScaleTensor
Type : const DML_TENSOR_DESC*
Un tensor contenant les données d’échelle OutputTensor . Les dimensions attendues de OutputScaleTensor sont { 1, 1, 1, 1 } si la quantisation par tensorisation est requise ou { 1, ChannelCount, 1, 1 } si la quantisation par canal est requise. Ces valeurs d’échelle sont utilisées pour quantifier les valeurs OutputTensor .
Remarque
Une valeur d’échelle de 0 entraîne un comportement non défini.
OutputZeroPointTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Un capteur facultatif contenant les données de point zéro OutputTensor . Les dimensions attendues de OutputZeroPointTensor sont { 1, 1, 1, 1 } si la quantisation par tensorisation est requise ou { 1, ChannelCount, 1, 1 } si la quantisation par canal est requise. Cette valeur de point zéro est utilisée pour quantifier les valeurs OutputTensor .
OutputTensor
Type : const DML_TENSOR_DESC*
Description du capteur de sortie. Les tailles du capteur 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 de l’input tensor 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 4D et 3 lorsqu’il s’agit d’un capteur 5D.
Strides
Type : _Field_size_(DimensionCount) const UINT*
Les pas pour les dimensions de fenêtre glissante { Height, Width } de tailles 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 } laquelle 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 tensor InputTensor d’entrée. Les valeurs se trouvent { 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 tensor InputTensor d’entrée. Les valeurs se trouvent { 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 de l’input tensor 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 { 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 bords spatiaux 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 de diviseur du calcul de moyenne.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_6_2.
Contraintes Tensor
- InputTensor et OutputTensor doivent avoir le même DimensionCount.
- InputTensor et InputZeroPointTensor doivent avoir le même Type de données.
- OutputTensor et OutputZeroPointTensor doivent avoir le même Type de données.
Prise en charge de Tensor
| Tenseur | Genre | Nombres de dimensions pris en charge | Types de données pris en charge |
|---|---|---|---|
| InputTensor | Entrée | 4 à 5 | INT8, UINT8 |
| InputScaleTensor | Entrée | 1 à 5 | FLOAT32 |
| InputZeroPointTensor | Entrée facultative | 1 à 5 | INT8, UINT8 |
| OutputScaleTensor | Entrée | 1 à 5 | FLOAT32 |
| OutputZeroPointTensor | Entrée facultative | 1 à 5 | INT8, UINT8 |
| Tenseur de sortie | Sortie | 4 à 5 | INT8, UINT8 |
Spécifications
| En-tête | directml.h |