Compartir a través de


estructura DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)

Realiza una convolución del FilterTensor con InputTensor. Este operador realiza la convolución hacia delante en los datos cuantificados. Este operador es matemáticamente equivalente a desquizar las entradas, resolver y, a continuación, cuantificar la salida.

Las funciones lineales de cuantificación usadas por este operador son las funciones de cuantificación lineales.

Función Dequantize

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Quantize (función)

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Sintaxis

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;
};

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de entrada. Las dimensiones esperadas de InputTensor son { InputBatchCount, InputChannelCount, InputHeight, InputWidth }.

InputScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de escala de entrada. Las dimensiones esperadas de InputScaleTensor son { 1, 1, 1, 1 }. Este valor de escala se usa para desquantizar los valores de entrada.

InputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos de punto cero de entrada. Las dimensiones esperadas de InputZeroPointTensor son { 1, 1, 1, 1 }. Este valor de punto cero se usa para desquantizar los valores de entrada.

FilterTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de filtro. Las dimensiones esperadas de FilterTensor son { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }.

FilterScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de escalado de filtros. Las dimensiones esperadas de FilterScaleTensor son { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, OutputChannelCount, 1, 1 } si se requiere la cuantificación por canal. Este valor de escala se usa para desquantizar los valores de filtro.

FilterZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos de punto cero de filtro. Las dimensiones esperadas del FilterZeroPointTensor son { 1, 1, 1, 1 } si se requiere la cuantificación por tensor, o { 1, OutputChannelCount, 1, 1 } si se requiere la cuantificación por canal. Este valor de punto cero se usa para desquiantizar los valores de filtro.

BiasTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor que contiene los datos de sesgo. El tensor de sesgo es un tensor que contiene datos que se difunden a través del tensor de salida al final de la convolución que se agrega al resultado. Las dimensiones esperadas de BiasTensor son { 1, OutputChannelCount, 1, 1 } para 4D.

OutputScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de escalado de salida. Las dimensiones esperadas de OutputScaleTensor son { 1, 1, 1, 1 }. Este valor de escala de entrada se usa para cuantificar los valores de salida de convolución.

OutputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene los datos de punto cero de filtro. Las dimensiones esperadas de OutputZeroPointTensor son { 1, 1, 1, 1 }. Este valor de punto cero de entrada se usa para cuantificar la convolución de los valores de salida.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor en el que se van a escribir los resultados. Las dimensiones esperadas de OutputTensor son { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }.

DimensionCount

Tipo: UINT

Número de dimensiones espaciales para la operación de convolución. Las dimensiones espaciales son las dimensiones inferiores del tensor FilterTensor del filtro de convolución. Este valor también determina el tamaño de las matrices Strides, Dilations, StartPadding y EndPadding . Solo se admite un valor de 2.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

Los pasos de la operación de convolución. Estos pasos se aplican al filtro de convolución. Son independientes de los pasos de tensor incluidos en DML_TENSOR_DESC.

Dilations

Tipo: _Field_size_(DimensionCount) const UINT*

Dilaciones de la operación de convolución. Las dilaciones son intervalos aplicados a los elementos del kernel de filtro. Esto tiene el efecto de simular un kernel de filtro más grande rellenando los elementos del kernel de filtro interno con ceros.

StartPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Valores de relleno que se aplicarán al principio de cada dimensión espacial del tensor de filtro y entrada de la operación de convolución.

EndPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Valores de relleno que se aplicarán al final de cada dimensión espacial del tensor de filtro y entrada de la operación de convolución.

GroupCount

Tipo: UINT

Número de grupos en los que se divide la operación de convolución. GroupCount se puede usar para lograr la convolución de nivel de profundidad estableciendo GroupCount igual al recuento de canales de entrada. Esto divide la convolución en una convolución independiente por canal de entrada.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_1.

Restricciones tensor

  • BiasTensor, FilterTensor, InputTensor y OutputTensor deben tener el mismo DimensionCount.
  • OutputTensor y OutputZeroPointTensor deben tener el mismo DataType.
  • InputTensor y InputZeroPointTensor deben tener el mismo DataType.
  • FilterTensor y FilterZeroPointTensor deben tener el mismo DataType.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_5_2 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 3 a 4 INT8, UINT8
InputScaleTensor Entrada De 1 a 4 FLOAT32
InputZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
FilterTensor Entrada De 3 a 4 INT8, UINT8
FilterScaleTensor Entrada De 1 a 4 FLOAT32
FilterZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
BiasTensor Entrada opcional De 3 a 4 INT32
OutputScaleTensor Entrada De 1 a 4 FLOAT32
OutputZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
OutputTensor Resultados De 3 a 4 INT8, UINT8

DML_FEATURE_LEVEL_4_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 3 a 4 INT8, UINT8
InputScaleTensor Entrada De 1 a 4 FLOAT32
InputZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
FilterTensor Entrada De 3 a 4 INT8, UINT8
FilterScaleTensor Entrada De 3 a 4 FLOAT32
FilterZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
BiasTensor Entrada opcional De 3 a 4 INT32
OutputScaleTensor Entrada De 1 a 4 FLOAT32
OutputZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
OutputTensor Resultados De 3 a 4 INT8, UINT8

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
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 Resultados 4 INT8, UINT8

Requisitos

Requisito Value
Cliente mínimo compatible compilación 20348 de Windows 10
Servidor mínimo compatible compilación 20348 de Windows 10
Encabezado directml.h