estrutura DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)

Executa uma convolução do FilterTensor com oInputTensor . Esse operador executa a convolução de encaminhamento em dados quantizados. Esse operador é matematicamente equivalente a desquantizar as entradas, concatenar e, em seguida, quantificar a saída.

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 são .

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 são . Esse valor de ponto zero é usado para desquantizar os valores de entrada.

FilterTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de filtro. As dimensões esperadas do FilterTensor são .

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 são se a quantização por tensor for necessária ou se a quantização por canal for necessária. Esse valor de ponto zero é usado para desquantizar os valores de filtro.

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

Tipo: UINT

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

Tipo: UINT

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