structure DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)
Effectue une convolution du
Les fonctions linéaires quantize utilisées par cet opérateur sont les fonctions de quantisation linéaire
Dequantize, fonction
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
Quantize, fonction
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
Syntaxe
struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputScaleTensor;
const DML_TENSOR_DESC *InputZeroPointTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *FilterScaleTensor;
const DML_TENSOR_DESC *FilterZeroPointTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
UINT GroupCount;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Ensor contenant les données d’entrée. Les dimensions attendues des InputTensor
InputScaleTensor
Type : const DML_TENSOR_DESC*
Ensor contenant les données d’échelle d’entrée. Les dimensions attendues de la InputScaleTensor
sont { 1, 1, 1, 1 }
. Cette valeur d’échelle est utilisée pour déquanter les valeurs d’entrée.
Note
Une valeur d’échelle de 0 entraîne un comportement non défini.
InputZeroPointTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Un capteur facultatif contenant les données de point zéro d’entrée. Les dimensions attendues des InputZeroPointTensor sont { 1, 1, 1, 1 }
. Cette valeur de point zéro est utilisée pour déquanter les valeurs d’entrée.
FilterTensor
Type : const DML_TENSOR_DESC*
Ensor contenant les données de filtre. Les dimensions attendues du FilterTensor sont { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterScaleTensor
Type : const DML_TENSOR_DESC*
Ensor contenant les données de mise à l’échelle du filtre. Les dimensions attendues de l'FilterScaleTensor
sont { 1, 1, 1, 1 }
si la quantisation par capteur est requise, ou { 1, OutputChannelCount, 1, 1 }
si la quantisation par canal est requise. Cette valeur d’échelle est utilisée pour déquanter les valeurs de filtre.
Note
Une valeur d’échelle de 0 entraîne un comportement non défini.
FilterZeroPointTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Un capteur facultatif contenant les données de point zéro de filtre. Les dimensions attendues de la FilterZeroPointTensor sont { 1, 1, 1, 1 }
si la quantisation par tensorisation est requise ou { 1, OutputChannelCount, 1, 1 }
si la quantisation par canal est requise. Cette valeur de point zéro est utilisée pour déquanter les valeurs de filtre.
BiasTensor
Type : _Maybenull_ const DML_TENSOR_DESC*
Un capteur contenant les données de biais. Le capteur de biais est un capteur contenant des données qui sont diffusées sur le capteur de sortie à la fin de la convolution qui est ajoutée au résultat. Les dimensions attendues du BiasTensor sont { 1, OutputChannelCount, 1, 1 }
pour 4D.
OutputScaleTensor
Type : const DML_TENSOR_DESC*
Ensor contenant les données d’échelle de sortie. Les dimensions attendues de OutputScaleTensor sont { 1, 1, 1, 1 }
. Cette valeur d’échelle d’entrée est utilisée pour quantifier les valeurs de sortie de convolution.
Note
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 de filtre. Les dimensions attendues de OutputZeroPointTensor sont { 1, 1, 1, 1 }
. Cette valeur zéro point d’entrée est utilisée pour quantifier la convolution des valeurs de sortie.
OutputTensor
Type : const DML_TENSOR_DESC*
Un tensoriel dans lequel écrire les résultats. Les dimensions attendues de OutputTensor sont { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
Type : UINT
Nombre de dimensions spatiales pour l’opération de convolution. Les dimensions spatiales sont les dimensions inférieures du filtre de convolution FilterTensor. Cette valeur détermine également la taille des
Strides
Type : _Field_size_(DimensionCount) const UINT*
Les pas de l’opération de convolution. Ces pas sont appliqués au filtre de convolution. Ils sont séparés des passeurs inclus dans DML_TENSOR_DESC.
Dilations
Type : _Field_size_(DimensionCount) const UINT*
Dilations de l’opération de convolution. Les dilations sont appliquées aux éléments du noyau de filtre. Cela a pour effet de simuler un noyau de filtre plus grand en remplissant les éléments de noyau de filtre interne avec des zéros.
StartPadding
Type : _Field_size_(DimensionCount) const UINT*
Valeurs de remplissage à appliquer au début de chaque dimension spatiale du filtre et du capteur d’entrée de l’opération de convolution.
EndPadding
Type : _Field_size_(DimensionCount) const UINT*
Valeurs de remplissage à appliquer à la fin de chaque dimension spatiale du filtre et du capteur d’entrée de l’opération de convolution.
GroupCount
Type : UINT
Nombre de groupes dans lesquels diviser l’opération de convolution. GroupCount peut être utilisé pour obtenir une convolution approfondie en définissant le GroupCount égal au nombre de canaux d’entrée. Cela divise la convolution en une convolution distincte par canal d’entrée.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_1
.
Contraintes Tensor
- BiasTensor, FilterTensor, InputTensor et OutputTensor doivent avoir le même DimensionCount.
- OutputTensor et OutputZeroPointTensor doivent avoir le même DataType.
- InputTensor et InputZeroPointTensor doivent avoir le même type de données .
- FilterTensor et FilterZeroPointTensor doivent avoir le même type de données .
Prise en charge de Tensor
DML_FEATURE_LEVEL_5_2 et versions ultérieures
Tenseur | Gentil | Nombres de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 3 à 4 | INT8, UINT8 |
InputScaleTensor | Entrée | 1 à 4 | FLOAT32 |
InputZeroPointTensor | Entrée facultative | 1 à 4 | INT8, UINT8 |
FilterTensor | Entrée | 3 à 4 | INT8, UINT8 |
FilterScaleTensor | Entrée | 1 à 4 | FLOAT32 |
FilterZeroPointTensor | Entrée facultative | 1 à 4 | INT8, UINT8 |
BiasTensor | Entrée facultative | 3 à 4 | INT32 |
OutputScaleTensor | Entrée | 1 à 4 | FLOAT32 |
OutputZeroPointTensor | Entrée facultative | 1 à 4 | INT8, UINT8 |
OutputTensor | Sortie | 3 à 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_4_0 et versions ultérieures
Tenseur | Gentil | Nombres de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 3 à 4 | INT8, UINT8 |
InputScaleTensor | Entrée | 1 à 4 | FLOAT32 |
InputZeroPointTensor | Entrée facultative | 1 à 4 | INT8, UINT8 |
FilterTensor | Entrée | 3 à 4 | INT8, UINT8 |
FilterScaleTensor | Entrée | 3 à 4 | FLOAT32 |
FilterZeroPointTensor | Entrée facultative | 1 à 4 | INT8, UINT8 |
BiasTensor | Entrée facultative | 3 à 4 | INT32 |
OutputScaleTensor | Entrée | 1 à 4 | FLOAT32 |
OutputZeroPointTensor | Entrée facultative | 1 à 4 | INT8, UINT8 |
OutputTensor | Sortie | 3 à 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 et versions ultérieures
Tenseur | Gentil | Nombres de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | INT8, UINT8 |
InputScaleTensor | Entrée | 4 | FLOAT32 |
InputZeroPointTensor | Entrée facultative | 4 | INT8, UINT8 |
FilterTensor | Entrée | 4 | INT8, UINT8 |
FilterScaleTensor | Entrée | 4 | FLOAT32 |
FilterZeroPointTensor | Entrée facultative | 4 | INT8, UINT8 |
BiasTensor | Entrée facultative | 4 | INT32 |
OutputScaleTensor | Entrée | 4 | FLOAT32 |
OutputZeroPointTensor | Entrée facultative | 4 | INT8, UINT8 |
OutputTensor | Sortie | 4 | INT8, UINT8 |
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 Build 20348 |
serveur minimum pris en charge | Windows 10 Build 20348 |
d’en-tête | directml.h |