structure DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC (directml.h)
Exécute la fonction de quantisation linéaire suivante sur chaque élément de InputTensor par rapport à son élément correspondant dans ScaleTensor et ZeroPointTensor, en plaçant les résultats dans l’élément correspondant de OutputTensor.
// 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 quantisation implique la conversion en type de données de précision inférieure afin d’accélérer l’arithmétique. Il s’agit d’un moyen courant d’augmenter les performances au coût 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*
Capteur contenant les entrées.
ScaleTensor
Type : const DML_TENSOR_DESC*
Capteur contenant les échelles.
Note
Une valeur d’échelle de 0 entraîne un comportement non défini.
Si InputTensor est INT32, ScaleTensor doit être FLOAT32. Sinon, ScaleTensor doivent avoir le même DataType que InputTensor.
ZeroPointTensor
Type : const DML_TENSOR_DESC*
Capteur contenant le point zéro souhaité pour la quantisation.
OutputTensor
Type : const DML_TENSOR_DESC*
Le tensoriel de sortie dans lequel écrire les résultats.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0
.
Contraintes Tensor
- InputTensor , OutputTensor , ScaleTensor et ZeroPointTensor doivent avoir les mêmes DimensionCount et Sizes.
- OutputTensor et ZeroPointTensor doivent avoir le même type de données .
Prise en charge de Tensor
DML_FEATURE_LEVEL_6_2 et versions ultérieures
Tenseur | Gentil | Nombres 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 | Gentil | Nombres 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 | Gentil | Nombres 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 | Gentil | Nombres 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 | Gentil | Nombres 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 |
Exigences
Exigence | Valeur |
---|---|
d’en-tête | directml.h |