Partager via


structure DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)

Effectue une convolution du FilterTensor avec leInputTensor . Cet opérateur effectue une convolution vers l’avant sur des données quantifiées. Cet opérateur équivaut mathématiquement à déquanter les entrées, à la convolvation, puis à quantifier la sortie.

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 sont .

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 desStrides, dilations, startPaddinget tableaux de endPadding. Seule la valeur 2 est prise en charge.

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