Partager via


structure DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC (directml.h)

Effectue une fonction de multiplication de matrice sur des données quantifiées. Cet opérateur équivaut mathématiquement à déquanter les entrées, à effectuer une multiplication de matrices, puis à quantifier la sortie.

Cet opérateur exige que la matrice multiplie les tenseurs d’entrée soit 4D qui sont mis en forme comme { BatchCount, ChannelCount, Height, Width }. L’opérateur de multiplication de matrices effectue BatchCount * ChannelCount nombre de multiplications de matrice indépendantes.

Par exemple, si ATensor a Sizes de , et BTensor a Sizes de et Le OutputTensor a Sizes de , puis l’opérateur de multiplication de matrices effectue batchCount * ChannelCount independent matrix multiplications of dimensions {M,K} x {K,N} = {M,N}.

Dequantize, fonction

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Quantize, fonction

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Syntaxe

struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
  const DML_TENSOR_DESC *ATensor;
  const DML_TENSOR_DESC *AScaleTensor;
  const DML_TENSOR_DESC *AZeroPointTensor;
  const DML_TENSOR_DESC *BTensor;
  const DML_TENSOR_DESC *BScaleTensor;
  const DML_TENSOR_DESC *BZeroPointTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
};

Membres

ATensor

Type : const DML_TENSOR_DESC*

Un capteur contenant les données A. Les dimensions de ce capteur doivent être { BatchCount, ChannelCount, M, K }.

AScaleTensor

Type : const DML_TENSOR_DESC*

Un tensor contenant les données de mise à l’échelle ATensor. Les dimensions attendues de l'AScaleTensor sont { 1, 1, 1, 1 } si la quantisation par capteur est requise, ou { 1, 1, M, 1 } si la quantisation par ligne est requise. Ces valeurs d’échelle sont utilisées pour déquanter les valeurs A.

Note

Une valeur d’échelle de 0 entraîne un comportement non défini.

AZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif contenant les données ATensor point zéro. Les dimensions attendues de l’AZeroPointTensor sont { 1, 1, 1, 1 } si la quantisation par tensoriel est requise, ou { 1, 1, M, 1 } si la quantisation par ligne est requise. Ces valeurs de point zéro sont utilisées pour déquanter les valeurs ATensor.

BTensor

Type : const DML_TENSOR_DESC*

Un capteur contenant les données B. Les dimensions de ce capteur doivent être { BatchCount, ChannelCount, K, N }.

BScaleTensor

Type : const DML_TENSOR_DESC*

Un capteur contenant les données de mise à l’échelle BTensor. Les dimensions attendues de l'BScaleTensor sont { 1, 1, 1, 1 } si la quantisation par capteur est requise, ou { 1, 1, 1, N } si la quantisation par colonne est requise. Ces valeurs d’échelle sont utilisées pour déquanter les valeurs BTensor.

Note

Une valeur d’échelle de 0 entraîne un comportement non défini.

BZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif contenant les données BTensor point zéro. Les dimensions attendues de l'BZeroPointTensor sont { 1, 1, 1, 1 } si la quantisation par capteur est requise, ou { 1, 1, 1, N } si la quantisation par colonne est requise. Ces valeurs de point zéro sont utilisées pour déquanter les valeurs BTensor.

OutputScaleTensor

Type : const DML_TENSOR_DESC*

Un capteur contenant les données de mise à l’échelle OutputTensor. Les dimensions attendues de l'OutputScaleTensor sont { 1, 1, 1, 1 } si la quantisation par capteur est requise, ou { 1, 1, M, 1 } si la quantisation par ligne est requise. Cette valeur d’échelle est utilisée pour déquanter les valeurs OutputTensor.

Note

Une valeur d’échelle de 0 entraîne un comportement non défini.

OutputZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un capteur facultatif contenant les données OutputTensor point zéro. Les dimensions attendues de l'OutputZeroPointTensor sont { 1, 1, 1, 1 } si la quantisation par capteur est requise, ou { 1, 1, M, 1 } si la quantisation par ligne est requise. Cette valeur de point zéro est utilisée pour déquanter les valeurs OutputTensor.

OutputTensor

Type : const DML_TENSOR_DESC*

Un tensoriel dans lequel écrire les résultats. Les dimensions de ce capteur sont { BatchCount, ChannelCount, M, N }.

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_1.

Contraintes Tensor

  • AScaleTensor , AZeroPointTensor, BScaleTensor, BZeroPointTensor , OutputScaleTensoret OutputZeroPointTensor doivent avoir le même DimensionCount.
  • ATensor, BTensor et OutputTensor doivent avoir le même DimensionCount.
  • BTensor et BZeroPointTensor doivent avoir le même DataType.
  • OutputTensor et OutputZeroPointTensor doivent avoir le même DataType.
  • AScaleTensor , AZeroPointTensor, BScaleTensor, BZeroPointTensor , OutputScaleTensoret OutputZeroPointTensor doivent avoir le même DimensionCount.
  • ATensor et AZeroPointTensor doivent avoir le même type de données .

Prise en charge de Tensor

DML_FEATURE_LEVEL_4_0 et versions ultérieures

Tenseur Gentil Nombres de dimensions pris en charge Types de données pris en charge
ATensor Entrée 2 à 4 INT8, UINT8
AScaleTensor Entrée 1 à 4 FLOAT32
AZeroPointTensor Entrée facultative 1 à 4 INT8, UINT8
BTensor Entrée 2 à 4 INT8, UINT8
BScaleTensor Entrée 1 à 4 FLOAT32
BZeroPointTensor Entrée facultative 1 à 4 INT8, UINT8
OutputScaleTensor Entrée 1 à 4 FLOAT32
OutputZeroPointTensor Entrée facultative 1 à 4 INT8, UINT8
OutputTensor Sortie 2 à 4 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
ATensor Entrée 4 INT8, UINT8
AScaleTensor Entrée 4 FLOAT32
AZeroPointTensor Entrée facultative 4 INT8, UINT8
BTensor Entrée 4 INT8, UINT8
BScaleTensor Entrée 4 FLOAT32
BZeroPointTensor Entrée facultative 4 INT8, UINT8
OutputScaleTensor Entrée 4 FLOAT32
OutputZeroPointTensor Entrée facultative 4 INT8, UINT8
OutputTensor Sortie 4 INT8, UINT8

Exigences

Exigence Valeur
client minimum pris en charge Windows 10 Build 20348
serveur minimum pris en charge Windows 10 Build 20348
d’en-tête directml.h