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 |