Estrutura DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC (directml.h)
Executa uma função de multiplicação de matriz em dados de tensor de entrada inteiro e produz saída de ponto flutuante.
Esse operador requer que os tensores de entrada de multiplicação da matriz sejam 4D, que são formatados como { BatchCount, ChannelCount, Height, Width }
. O operador de multiplicação de matriz executará o número BatchCount * ChannelCount de multiplicações de matriz independentes.
Por exemplo, se ATensor tiver Sizes de { BatchCount, ChannelCount, M, K }
e BTensor tiver Sizes de { BatchCount, ChannelCount, K, N }
e OutputTensor tiver Sizes de { BatchCount, ChannelCount, M, N }
, então, o operador de multiplicação de matrizes executará multiplicações de matrizes independentes BatchCount * ChannelCount de dimensões {M,K} x {K,N} = {M,N}.
Importante
Essa API está disponível como parte do pacote redistribuível autônomo DirectML (consulte Microsoft.AI.DirectML versão 1.13 e posterior. Confira também o histórico de versões do DirectML.
Sintaxe
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;
};
Membros
ATensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados A. As dimensões deste tensor devem ser { BatchCount, ChannelCount, M, K }
.
AScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados da escala ATensor. As dimensões esperadas de AScaleTensor serão { 1, 1, 1, 1 }
se a quantificação por tensor for necessária ou { 1, 1, M, 1 }
se a quantificação por linha for necessária. Esses valores de escala são usados para dequantizar os valores de ATensor.
AZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero do ATensor. As dimensões esperadas de AZeroPointTensor são { 1, 1, 1, 1 }
se a quantização por tensor é necessária, ou { 1, 1, M, 1 }
se a quantização por linha é necessária. Esses valores de ponto zero são usados para dequantizar os valores do ATensor.
BTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados B. As dimensões deste tensor devem ser { BatchCount, ChannelCount, K, N }
.
BScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala de BTensor. As dimensões esperadas de BScaleTensor são { 1, 1, 1, 1 }
se a quantização por tensor é necessária, ou { 1, 1, 1, N }
se a quantização por coluna é necessária. Esses valores de escala são usados para desquantificar os valores do BTensor.
BZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero do BTensor. As dimensões esperadas do BZeroPointTensor são { 1, 1, 1, 1 }
se a quantização por tensor é necessária, ou { 1, 1, 1, N }
se a quantização por coluna é necessária. Esses valores de ponto zero são usados para desquantificar os valores do BTensor.
OutputScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala de OutputTensor. As dimensões esperadas de OutputScaleTensor são { 1, 1, 1, 1 }
, se a quantização por tensor é necessária, ou { 1, 1, M, 1 }
, se a quantização por linha é necessária. Esse valor de escala é usado para dequantizar os valores do OutputTensor.
OutputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero do OutputTensor. As dimensões esperadas do OutputZeroPointTensor são { 1, 1, 1, 1 }
, se a quantização por tensor é necessária, ou { 1, 1, M, 1 }
, se a quantização por linha é necessária. Esse valor de ponto zero é usado para dequantizar os valores do OutputTensor.
BiasTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de desvio. Se fornecido, os Sizes desse tensor devem corresponder ao tamanho de saída { BatchCount, ChannelCount, M, N }
.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor com o qual escrever os resultados. As dimensões deste tensor são { BatchCount, ChannelCount, M, N }
.
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_6_2.
Restrições de tensor
- AScaleTensor, AZeroPointTensor, BScaleTensor e BZeroPointTensor devem ter o mesmo DimensionCount.
- ATensor, BiasTensor, BTensor e OutputTensor devem ter o mesmo DimensionCount.
- BiasTensor e OutputTensor devem ter os mesmos Sizes.
- ATensor, AZeroPointTensor, BTensor e BZeroPointTensor devem ter o mesmo DataType.
- AScaleTensor, BiasTensor, BScaleTensor e OutputTensor devem ter o mesmo DataType.
Suporte a tensores
Tensor | Tipo | Dimensões | Contagens de dimensões compatíveis | Tipos de dados com suporte |
---|---|---|---|---|
ATensor | Entrada | { [BatchCount], [ChannelCount], M, K } | 2 a 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
AScaleTensor | Entrada | { AScaleDimensions[] } | 1 a 4 | FLOAT32, FLOAT16 |
AZeroPointTensor | Entrada opcional | { [1], [1], AZeroPointCount, [1] } | 1 a 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BTensor | Entrada | { [BatchCount], [ChannelCount], K, N } | 2 a 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BScaleTensor | Entrada | { BScaleDimensions[] } | 1 a 4 | FLOAT32, FLOAT16 |
BZeroPointTensor | Entrada opcional | { [1], [1], [1], BZeroPointCount } | 1 a 4 | INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BiasTensor | Entrada opcional | { [BatchCount], [ChannelCount], M, N } | 2 a 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | { [BatchCount], [ChannelCount], M, N } | 2 a 4 | FLOAT32, FLOAT16 |
Requisitos
Cabeçalho | directml.h |