Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 |