estructura DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)
Realiza una convolución del
Las funciones lineales de cuantificación usadas por este operador son las funciones de cuantificación lineales.
Desquantize (función)
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 del inputTensor de
InputScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de escalado de entrada. Las dimensiones esperadas del InputScaleTensor
son { 1, 1, 1, 1 }
. Este valor de escala se usa para desquiantizar los valores de entrada.
Nota
Un valor de escala de 0 da como resultado un comportamiento indefinido.
InputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensor opcional que contiene los datos de punto cero de entrada. Las dimensiones esperadas del inputZeroPointTensor son { 1, 1, 1, 1 }
. Este valor de punto cero se usa para desquiantizar los valores de entrada.
FilterTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de filtro. Las dimensiones esperadas del FilterTensor son { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de escalado de filtros. Las dimensiones esperadas del FilterScaleTensor
se { 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 desquiantizar los valores de filtro.
Nota
Un valor de escala de 0 da como resultado un comportamiento indefinido.
FilterZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensor opcional que contiene los datos de cero puntos 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 transmiten a través del tensor de salida al final de la convolución que se agrega al resultado. Las dimensiones esperadas del BiasTensor se { 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 se { 1, 1, 1, 1 }
. Este valor de escala de entrada se usa para cuantificar los valores de salida de convolución.
Nota
Un valor de escala de 0 da como resultado un comportamiento indefinido.
OutputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensor opcional que contiene los datos de cero puntos de filtro. Las dimensiones esperadas de OutputZeroPointTensor se { 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 escribir los resultados. Las dimensiones esperadas de OutputTensor se { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
Tipo: UINT de
Número de dimensiones espaciales para la operación de convolución. Las dimensiones espaciales son las dimensiones inferiores del tensor de filtro de convolución FilterTensor. Este valor también determina el tamaño del Strides, Dilations, StartPaddingy matrices de 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 pasos 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 de
Número de grupos en los que se va a dividir la operación de convolución.
Disponibilidad
Este operador se introdujo en DML_FEATURE_LEVEL_2_1
.
Restricciones tensor
- BiasTensor, FilterTensor, InputTensory 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 | Amable | 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 | Salida | De 3 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_4_0 y versiones posteriores
Tensor | Amable | 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 | Salida | De 3 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 y versiones posteriores
Tensor | Amable | 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 | Salida | 4 | INT8, UINT8 |
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Compilación 20348 de Windows 10 |
servidor mínimo admitido | Compilación 20348 de Windows 10 |
encabezado de |
directml.h |