Partager via


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

Voir aussi

DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC