Partager via


Structure DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC (directml.h)

Effectue une fonction de multiplication de matrice sur les données entière du tenseur d’entrée et produit une sortie à virgule flottante.

Cet opérateur exige que la matrice multiplie les tenseurs d'entrée 4D, qui sont formatés comme suit : { BatchCount, ChannelCount, Height, Width }. L’opérateur de multiplication de matrices effectue BatchCount * ChannelCount multiplications de matrice indépendantes.

Par exemple, si ATensor a Sizes de { BatchCount, ChannelCount, M, K }, et BTensor a Sizes of { BatchCount, ChannelCount, K, N }, et que OutputTensor a Sizes of { BatchCount, ChannelCount, M, N }, alors l’opérateur de multiplication de matrices matricielles effectue les multiplications de matrices indépendantes BatchCount * ChannelCount de dimensions {M,K} x {K,N} = {M,N}.

Important

Cette API est disponible dans le cadre du package redistribuable autonome DirectML (voir Microsoft.AI.DirectML version 1.13 et ultérieures). Consultez également l’historique des versions DirectML.

Syntaxe

struct DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC
{
    const DML_TENSOR_DESC* ATensor;
    const DML_TENSOR_DESC* AScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
    const DML_TENSOR_DESC* BTensor;
    const DML_TENSOR_DESC* BScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
    _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
    const DML_TENSOR_DESC* OutputTensor;
};

Membres

ATensor

Type : const DML_TENSOR_DESC*

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

AScaleTensor

Type : const DML_TENSOR_DESC*

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

AZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un tenseur facultatif contenant les données de point zéro de ATensor. Les dimensions attendues de AZeroPointTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, 1, M, 1 } si la quantification par ligne est requise. Ces valeurs de point zéro sont utilisées pour déquantifier les valeurs de ATensor.

BTensor

Type : const DML_TENSOR_DESC*

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

BScaleTensor

Type : const DML_TENSOR_DESC*

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

BZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

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

OutputScaleTensor

Type : const DML_TENSOR_DESC*

Un tenseur contenant les données d’échelle de OutputTensor. Les dimensions attendues de OutputScaleTensor sont { 1, 1, 1, 1 } si la quantification par tenseur est requise ou { 1, 1, M, 1 } si la quantification par ligne est requise. Cette valeur d’échelle est utilisée pour déquantifier les valeurs de OutputTensor .

OutputZeroPointTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

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

BiasTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Un tenseur facultatif contenant les données de biais. Si elle est fournie, les valeurs Sizes de ce tenseur doivent correspondre à la taille de sortie { BatchCount, ChannelCount, M, N }.

OutputTensor

Type : const DML_TENSOR_DESC*

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

Disponibilité

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

Contraintes de tenseur

  • AScaleTensor, AZeroPointTensor, BScaleTensor et BZeroPointTensor doivent avoir le même DimensionCount.
  • ATensor, BiasTensor, BTensor et OutputTensor doivent avoir le même DimensionCount.
  • BiasTensor et OutputTensor doivent avoir le même Sizes.
  • ATensor, AZeroPointTensor, BTensor et BZeroPointTensor doivent avoir le même DataType.
  • AScaleTensor, BiasTensor, BScaleTensor et OutputTensor doivent avoir le même DataType.

Prise en charge des tenseurs

Tenseur Genre Dimensions Nombre de dimensions pris en charge Types de données pris en charge
ATensor Input { [BatchCount], [ChannelCount], M, N } 2 à 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
AScaleTensor Input { AScaleDimensions[] } 1 à 4 FLOAT32, FLOAT16
AZeroPointTensor Entrée facultative { [1], [1], AZeroPointCount, [1] } 1 à 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
BTensor Input { [BatchCount], [ChannelCount], K, N } 2 à 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
BScaleTensor Input { BScaleDimensions[] } 1 à 4 FLOAT32, FLOAT16
BZeroPointTensor Entrée facultative { [1], [1], [1], BZeroPointCount } 1 à 4 INT32, INT16, INT8, UINT32, UINT16, UINT8
BiasTensor Entrée facultative { [BatchCount], [ChannelCount], M, N } 2 à 4 FLOAT32, FLOAT16
OutputTensor Sortie { [BatchCount], [ChannelCount], M, N } 2 à 4 FLOAT32, FLOAT16

Spécifications

   
En-tête directml.h