estrutura DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)
Executa uma convolução do
As funções lineares de quantize usadas por esse operador são as funções de quantização linear
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_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputScaleTensor;
const DML_TENSOR_DESC *InputZeroPointTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *FilterScaleTensor;
const DML_TENSOR_DESC *FilterZeroPointTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
UINT GroupCount;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de entrada. As dimensões esperadas do InputTensor
InputScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala de entrada. As dimensões esperadas do InputScaleTensor
são { 1, 1, 1, 1 }
. Esse valor de escala é usado para desquantizar os valores de entrada.
Nota
Um valor de escala de 0 resulta em um comportamento indefinido.
InputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero de entrada. As dimensões esperadas do InputZeroPointTensor
FilterTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de filtro. As dimensões esperadas do
FilterScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala de filtro. As dimensões esperadas do FilterScaleTensor
são { 1, 1, 1, 1 }
se por quantização tensor for necessária ou { 1, OutputChannelCount, 1, 1 }
se a quantização por canal for necessária. Esse valor de escala é usado para desquantizar os valores de filtro.
Nota
Um valor de escala de 0 resulta em um comportamento indefinido.
FilterZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero de filtro. As dimensões esperadas do FilterZeroPointTensor
BiasTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor que contém os dados de viés. O tensor de viés é um tensor que contém dados que são transmitidos pelo tensor de saída no final da convolução que é adicionada ao resultado. As dimensões esperadas do BiasTensor são { 1, OutputChannelCount, 1, 1 }
para 4D.
OutputScaleTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de escala de saída. As dimensões esperadas do OutputScaleTensor são { 1, 1, 1, 1 }
. Esse valor de escala de entrada é usado para quantificar os valores de saída de convolução.
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 os dados de ponto zero de filtro. As dimensões esperadas do OutputZeroPointTensor são { 1, 1, 1, 1 }
. Esse valor de ponto zero de entrada é usado para quantificar a convolução dos valores de saída.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor para o qual gravar os resultados. As dimensões esperadas do OutputTensor são { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
O número de dimensões espaciais para a operação de convolução. Dimensões espaciais são as dimensões inferiores do tensor de filtro de convolução FilterTensor. Esse valor também determina o tamanho das matrizes Strides, Dilations, StartPaddinge EndPadding. Há suporte apenas para um valor de 2.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
Os passos da operação de convolução. Esses passos são aplicados ao filtro de convolução. Eles são separados dos passos tensores incluídos em DML_TENSOR_DESC.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
As vibrações da operação de convolução. As vibrações são avanços aplicados aos elementos do kernel de filtro. Isso tem o efeito de simular um kernel de filtro maior preenchendo os elementos do kernel de filtro interno com zeros.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Os valores de preenchimento a serem aplicados ao início de cada dimensão espacial do filtro e tensor de entrada da operação de convolução.
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Os valores de preenchimento a serem aplicados ao final de cada dimensão espacial do filtro e tensor de entrada da operação de convolução.
GroupCount
O número de grupos nos quais dividir a operação de convolução. GroupCount pode ser usado para obter convolução detalhada definindo o GroupCount igual à contagem de canais de entrada. Isso divide a convolução em uma convolução separada por canal de entrada.
Disponibilidade
Este operador foi introduzido no DML_FEATURE_LEVEL_2_1
.
Restrições do Tensor
- BiasTensor, FilterTensor, InputTensore OutputTensor devem ter o mesmo DimensionCount.
- OutputTensor e OutputZeroPointTensor deve ter o mesmo DataType.
- InputTensor e InputZeroPointTensor deve ter o mesmo DataType.
- FilterTensor e FilterZeroPointTensor deve ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_5_2 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 3 a 4 | INT8, UINT8 |
InputScaleTensor | Entrada | 1 a 4 | FLOAT32 |
InputZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
FilterTensor | Entrada | 3 a 4 | INT8, UINT8 |
FilterScaleTensor | Entrada | 1 a 4 | FLOAT32 |
FilterZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
BiasTensor | Entrada opcional | 3 a 4 | INT32 |
OutputScaleTensor | Entrada | 1 a 4 | FLOAT32 |
OutputZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
OutputTensor | Saída | 3 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 3 a 4 | INT8, UINT8 |
InputScaleTensor | Entrada | 1 a 4 | FLOAT32 |
InputZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
FilterTensor | Entrada | 3 a 4 | INT8, UINT8 |
FilterScaleTensor | Entrada | 3 a 4 | FLOAT32 |
FilterZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
BiasTensor | Entrada opcional | 3 a 4 | INT32 |
OutputScaleTensor | Entrada | 1 a 4 | FLOAT32 |
OutputZeroPointTensor | Entrada opcional | 1 a 4 | INT8, UINT8 |
OutputTensor | Saída | 3 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | INT8, UINT8 |
InputScaleTensor | Entrada | 4 | FLOAT32 |
InputZeroPointTensor | Entrada opcional | 4 | INT8, UINT8 |
FilterTensor | Entrada | 4 | INT8, UINT8 |
FilterScaleTensor | Entrada | 4 | FLOAT32 |
FilterZeroPointTensor | Entrada opcional | 4 | INT8, UINT8 |
BiasTensor | Entrada opcional | 4 | INT32 |
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 |