DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC estrutura (directml.h)
Executa uma função de multiplicação de matriz em dados quantizados. Esse operador é matematicamente equivalente a desquantizar as entradas, executar a multiplicação de matriz e, em seguida, quantificar a saída.
Esse operador requer que os tensores de entrada de multiplicação de matriz sejam 4D formatados como { BatchCount, ChannelCount, Height, Width }
. O operador de multiplicação de matriz executará BatchCount * Número ChannelCount de multiplicações de matriz independentes.
Por exemplo, se do ATensor tiver tamanhos de { BatchCount, ChannelCount, M, K }
e do BTensor tiver tamanhos de { BatchCount, ChannelCount, K, N }
e OutputTensor tem tamanhos de { BatchCount, ChannelCount, M, N }
, em seguida, o operador de multiplicação de matriz executará multiplicações de matriz independente BatchCount * ChannelCount de dimensões {M,K} x {K,N} = {M,N}.
Desquantizar função
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
Função Quantize
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
Sintaxe
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;
};
Membros
ATensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados A. As dimensões desse tensor devem ser { BatchCount, ChannelCount, M, K }
.
AScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala do ATensor. As dimensões esperadas do AScaleTensor
são { 1, 1, 1, 1 }
se por quantização tensor for necessária ou { 1, 1, M, 1 }
se a quantização por linha for necessária. Esses valores de escala são usados para desquantizar os valores A.
Nota
Um valor de escala de 0 resulta em um comportamento indefinido.
AZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém o ATensor dados de ponto zero. As dimensões esperadas do AZeroPointTensor são { 1, 1, 1, 1 }
se a quantização por tensor for necessária ou { 1, 1, M, 1 }
se a quantização por linha for necessária. Esses valores de ponto zero são usados para desquantizar os valores do ATensor.
BTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados B. As dimensões desse tensor devem ser { BatchCount, ChannelCount, K, N }
.
BScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala BScaleTensor
são { 1, 1, 1, 1 }
se por quantização tensor for necessária ou { 1, 1, 1, N }
se a quantização por coluna for necessária. Esses valores de escala são usados para desquantizar os valores
Nota
Um valor de escala de 0 resulta em um comportamento indefinido.
BZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém o BTensor dados de ponto zero. As dimensões esperadas do BZeroPointTensor
são { 1, 1, 1, 1 }
se por quantização tensor for necessária ou { 1, 1, 1, N }
se a quantização por coluna for necessária. Esses valores de ponto zero são usados para desquantizar os valores de
OutputScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala de OutputTensor. As dimensões esperadas do OutputScaleTensor
serão { 1, 1, 1, 1 }
se a quantização por tensor for necessária ou { 1, 1, M, 1 }
se a quantização por linha for necessária. Esse valor de escala é usado para desquantizar os valores OutputTensor.
Nota
Um valor de escala de 0 resulta em um comportamento indefinido.
OutputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém o OutputTensor dados de ponto zero. As dimensões esperadas do OutputZeroPointTensor
serão { 1, 1, 1, 1 }
se a quantização por tensor for necessária ou { 1, 1, M, 1 }
se a quantização por linha for necessária. Esse valor de ponto zero é usado para desquantizar os valores OutputTensor.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor para o qual gravar os resultados. As dimensões desse tensor são { BatchCount, ChannelCount, M, N }
.
Disponibilidade
Este operador foi introduzido no DML_FEATURE_LEVEL_2_1
.
Restrições do Tensor
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensore OutputZeroPointTensor devem ter o mesmo DimensionCount.
- ATensor, BTensor e OutputTensor devem ter o mesmo DimensionCount.
- BTensor e BZeroPointTensor devem ter o mesmo datatype.
- OutputTensor e OutputZeroPointTensor deve ter o mesmo DataType.
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensore OutputZeroPointTensor devem ter o mesmo DimensionCount.
- ATensor e AZeroPointTensor devem ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
ATensor | Entrada | 2 a 4 | INT8, UINT8 |
AScaleTensor | Entrada | 1 a 4 | FLOAT32 |
AZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
BTensor | Entrada | 2 a 4 | INT8, UINT8 |
BScaleTensor | Entrada | 1 a 4 | FLOAT32 |
BZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
OutputScaleTensor | Entrada | 1 a 4 | FLOAT32 |
OutputZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
OutputTensor | Saída | 2 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
ATensor | Entrada | 4 | INT8, UINT8 |
AScaleTensor | Entrada | 4 | FLOAT32 |
AZeroPointTensor | Entrada opcional | 4 | INT8, UINT8 |
BTensor | Entrada | 4 | INT8, UINT8 |
BScaleTensor | Entrada | 4 | FLOAT32 |
BZeroPointTensor | Entrada opcional | 4 | INT8, UINT8 |
OutputScaleTensor | Entrada | 4 | FLOAT32 |
OutputZeroPointTensor | Entrada opcional | 4 | INT8, UINT8 |
OutputTensor | Saída | 4 | INT8, UINT8 |
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 10 Build 20348 |
servidor com suporte mínimo | Windows 10 Build 20348 |
cabeçalho | directml.h |