Partager via


structure DML_CONVOLUTION_INTEGER_OPERATOR_DESC (directml.h)

Effectue une convolution du FilterTensor avec inputTensor. Cet opérateur effectue une convolution avant sur des données entières. Les tenseurs à point zéro facultatifs peuvent également être utilisés pour soustraire des valeurs de zéro point du tenseur d’entrée et de filtre.

Syntaxe

struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputZeroPointTensor;
  const DML_TENSOR_DESC *FilterTensor;
  const DML_TENSOR_DESC *FilterZeroPointTensor;
  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*

Tenseur contenant les données d’entrée. Les dimensions attendues de l’inputTensor sont { BatchCount, InputChannelCount, InputHeight, InputWidth }.

InputZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Tenseur facultatif contenant les données à point zéro d’entrée. Les dimensions attendues du InputZeroPointTensor sont { 1, 1, 1, 1 }.

FilterTensor

Type : const DML_TENSOR_DESC*

Tenseur contenant les données de filtre. Les dimensions attendues de FilterTensor sont { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }.

FilterZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Tenseur facultatif contenant les données à point zéro du filtre. Les dimensions attendues de FilterZeroPointTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, OutputChannelCount, 1, 1 } si la quantification par canal est requise.

OutputTensor

Type : const DML_TENSOR_DESC*

Tenseur dans lequel écrire les résultats. Les dimensions attendues du OutputTensor sont { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }.

DimensionCount

Type : UINT

Nombre de dimensions spatiales pour l’opération de convolution. Les dimensions spatiales sont les dimensions inférieures de la convolution FilterTensor. Cette valeur détermine également la taille des tableaux Strides, Dilations, StartPadding et EndPadding . Seule la valeur 2 est prise en charge.

Strides

Type : _Field_size_(DimensionCount) const UINT*

Tableau contenant les foulées de l’opération de convolution. Ces foulées sont appliquées au filtre de convolution. Elles sont distinctes des foulées de tenseurs incluses dans DML_TENSOR_DESC.

Dilations

Type : _Field_size_(DimensionCount) const UINT*

Tableau contenant les dilatations de l’opération de convolution. Les dilatations sont des foulées 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*

Tableau contenant les valeurs de remplissage à appliquer au début de chaque dimension spatiale du filtre et du tenseur d’entrée de l’opération de convolution.

EndPadding

Type : _Field_size_(DimensionCount) const UINT*

Tableau contenant les valeurs de remplissage à appliquer à la fin de chaque dimension spatiale du filtre et du tenseur 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 en profondeur en définissant GroupCount comme étant é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 tensoriels

  • FilterZeroPointTensor et InputZeroPointTensor doivent avoir le même DimensionCount.
  • FilterTensor, InputTensor et OutputTensor doivent avoir le même DimensionCount.
  • InputTensor et InputZeroPointTensor doivent avoir le même DataType.
  • FilterTensor et FilterZeroPointTensor doivent avoir le même DataType.

Prise en charge de Tensor

DML_FEATURE_LEVEL_4_0 et versions ultérieures

Tenseur Genre Dimensions Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée { BatchCount, InputChannelCount, [InputHeight], InputWidth } 3 à 4 INT8, UINT8
InputZeroPointTensor Entrée facultative { [1], [1], [1], 1 } 1 à 4 INT8, UINT8
FilterTensor Entrée { FilterBatchCount, FilterChannelCount, [FilterHeight], FilterWidth } 3 à 4 INT8, UINT8
FilterZeroPointTensor Entrée facultative { [1], FilterZeroPointChannelCount, [1], [1] } 1 à 4 INT8, UINT8
OutputTensor Sortie { BatchCount, OutputChannelCount, [OutputHeight], OutputWidth } 3 à 4 INT32

DML_FEATURE_LEVEL_2_1 et versions ultérieures

Tenseur Genre Dimensions Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée { BatchCount, InputChannelCount, InputHeight, InputWidth } 4 INT8, UINT8
InputZeroPointTensor Entrée facultative { 1, 1, 1, 1 } 4 INT8, UINT8
FilterTensor Entrée { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth } 4 INT8, UINT8
FilterZeroPointTensor Entrée facultative { 1, FilterZeroPointChannelCount, 1, 1 } 4 INT8, UINT8
OutputTensor Sortie { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } 4 INT32

Configuration requise

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