Partager via


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

Voir aussi

DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC