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 |