structure DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC (directml.h)
Exécute la fonction de quantification linéaire suivante sur chaque élément dans InputTensor par rapport à son élément correspondant dans ScaleTensor et ZeroPointTensor, en plaçant les résultats dans l’élément outputTensor correspondant.
// For uint8 output, Min = 0, Max = 255
// For int8 output, Min = -128, Max = 127
f(input, scale, zero_point) = clamp(round(input / scale) + zero_point, Min, Max)
La quantification implique la conversion en un type de données de plus faible précision afin d’accélérer l’arithmétique. Il s’agit d’un moyen courant d’augmenter les performances au détriment de la précision. Un groupe de valeurs 8 bits peut être calculé plus rapidement qu’un groupe de valeurs 32 bits.
Syntaxe
struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *ScaleTensor;
const DML_TENSOR_DESC *ZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les entrées.
ScaleTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les échelles. Si InputTensor est INT32, ScaleTensor doit être FLOAT32. Sinon, ScaleTensor doit avoir le même DataType que InputTensor.
ZeroPointTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant le point zéro souhaité pour la quantification.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie dans lequel écrire les résultats.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0
.
Contraintes tensoriels
- InputTensor, OutputTensor, ScaleTensor et ZeroPointTensor doivent avoir les mêmes DimensionCount et Sizes.
- OutputTensor et ZeroPointTensor doivent avoir le même DataType.
Prise en charge de Tensor
DML_FEATURE_LEVEL_6_2 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32 |
ScaleTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16 |
ZeroPointTensor | Entrée facultative | 1 à 8 | INT8, UINT8 |
OutputTensor | Sortie | 1 à 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_6_0 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32 |
ScaleTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16 |
ZeroPointTensor | Entrée | 1 à 8 | INT8, UINT8 |
OutputTensor | Sortie | 1 à 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_3_0 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 8 | FLOAT32, INT32 |
ScaleTensor | Entrée | 1 à 8 | FLOAT32 |
ZeroPointTensor | Entrée | 1 à 8 | INT8, UINT8 |
OutputTensor | Sortie | 1 à 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, INT32 |
ScaleTensor | Entrée | 4 | FLOAT32 |
ZeroPointTensor | Entrée | 4 | INT8, UINT8 |
OutputTensor | Sortie | 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_1_0 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32 |
ScaleTensor | Entrée | 4 | FLOAT32 |
ZeroPointTensor | Entrée | 4 | UINT8 |
OutputTensor | Sortie | 4 | UINT8 |
Configuration requise
En-tête | directml.h |