Compartir a través de


estructura DML_CONVOLUTION_OPERATOR_DESC (directml.h)

Realiza una convolución del FilterTensor con InputTensor. Este operador admite varias configuraciones de convolución estándar. Estas configuraciones estándar incluyen la convolución hacia delante y hacia atrás (transpuesta) estableciendo los campos Dirección y Modo , así como convolución en profundidad estableciendo el campo GroupCount .

Un resumen de los pasos implicados: realizar la convolución en el tensor de salida; cambia la forma del sesgo a los mismos tamaños de dimensión que el tensor de salida; agregue el tensor de sesgo reformado al tensor de salida.

Sintaxis

struct DML_CONVOLUTION_OPERATOR_DESC {
  const DML_TENSOR_DESC     *InputTensor;
  const DML_TENSOR_DESC     *FilterTensor;
  const DML_TENSOR_DESC     *BiasTensor;
  const DML_TENSOR_DESC     *OutputTensor;
  DML_CONVOLUTION_MODE      Mode;
  DML_CONVOLUTION_DIRECTION Direction;
  UINT                      DimensionCount;
  const UINT                *Strides;
  const UINT                *Dilations;
  const UINT                *StartPadding;
  const UINT                *EndPadding;
  const UINT                *OutputPadding;
  UINT                      GroupCount;
  const DML_OPERATOR_DESC   *FusedActivation;
};

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de entrada. Las dimensiones esperadas de InputTensor son:

  • { BatchCount, InputChannelCount, InputWidth } para 3D,
  • { BatchCount, InputChannelCount, InputHeight, InputWidth } para 4D y
  • { BatchCount, InputChannelCount, InputDepth, InputHeight, InputWidth } para 5D.

FilterTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de filtro. Las dimensiones esperadas de FilterTensor son:

  • { FilterBatchCount, FilterChannelCount, FilterWidth } para 3D,
  • { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth } para 4D y
  • { FilterBatchCount, FilterChannelCount, FilterDepth, FilterHeight, FilterWidth } para 5D.

BiasTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional 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 } para 3D,
  • { 1, OutputChannelCount, 1, 1 } para 4D y
  • { 1, OutputChannelCount, 1, 1, 1 } para 5D.

Para cada canal de salida, el valor de sesgo único de ese canal se agrega a cada elemento de ese canal del outputTensor. Es decir, biasTensor se transmite al tamaño de OutputTensor y lo que devuelve el operador es la suma de este BiasTensor transmitido con el resultado de la convolución.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor en el que se van a escribir los resultados. Las dimensiones esperadas de OutputTensor son:

  • { BatchCount, OutputChannelCount, OutputWidth } para 3D,
  • { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } para 4D y
  • { BatchCount, OutputChannelCount, OutputDepth, OutputHeight, OutputWidth } para 5D.

Mode

Tipo: DML_CONVOLUTION_MODE

Modo que se va a usar para la operación de convolución. DML_CONVOLUTION_MODE_CROSS_CORRELATION es el comportamiento necesario para escenarios de inferencia típicos. En cambio, DML_CONVOLUTION_MODE_CONVOLUTION voltea el orden de los elementos de cada kernel de filtro a lo largo de cada dimensión espacial.

Direction

Tipo: DML_CONVOLUTION_DIRECTION

Dirección de la operación de convolución. DML_CONVOLUTION_DIRECTION_FORWARD es la forma principal de convolución utilizada para la inferencia en la que se usa una combinación de DML_CONVOLUTION_DIRECTION_FORWARD y DML_CONVOLUTION_DIRECTION_BACKWARD durante el entrenamiento.

DimensionCount

Tipo: UINT

Número de dimensiones espaciales para la operación de convolución. Las dimensiones espaciales son las dimensiones inferiores del filterTensor de convolución. Por ejemplo, la dimensión de ancho y alto son dimensiones espaciales de un tensor de filtro de convolución 4D. Este valor también determina el tamaño de las matrices Strides, Dilations, StartPadding, EndPadding y OutputPadding . Debe establecerse en 2 cuando InputTensor.DimensionCount es 4 y 3 cuando InputTensor.DimensionCount es 5.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

Matriz que contiene 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*

Matriz que contiene las 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*

Matriz que contiene los valores de relleno que se van a aplicar al principio de cada dimensión espacial del tensor de filtro y entrada de la operación de convolución. Los valores de relleno inicial se interpretan según el campo Dirección .

EndPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Matriz que contiene los valores de relleno que se van a aplicar al final de cada dimensión espacial del tensor de filtro y entrada de la operación de convolución. Los valores de relleno final se interpretan según el campo Dirección .

OutputPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Matriz que contiene el relleno de salida de la operación de convolución. OutputPadding aplica un relleno cero al resultado de la convolución. Este relleno se aplica al final de cada dimensión espacial del tensor de salida.

GroupCount

Tipo: UINT

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

FusedActivation

Tipo: _Maybenull_ const DML_OPERATOR_DESC*

Una capa de activación fusionada opcional que se aplicará después de la convolución. Para obtener más información, consulta Uso de operadores fusionados para mejorar el rendimiento.

Interacciones de modo

Modo de convolución Dirección de convolución Orientación del filtro
DML_CONVOLUTION_MODE_CROSS_CORRELATION DML_CONVOLUTION_DIRECTION_FORWARD filter tiene orientación de identidad
DML_CONVOLUTION_MODE_CROSS_CORRELATION DML_CONVOLUTION_DIRECTION_BACKWARD filter se transpone a lo largo de los ejes x,y
DML_CONVOLUTION_MODE_CONVOLUTION DML_CONVOLUTION_DIRECTION_FORWARD filter se transpone a lo largo de los ejes x,y
DML_CONVOLUTION_MODE_CONVOLUTION DML_CONVOLUTION_DIRECTION_BACKWARD filter tiene orientación de identidad

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_1_0.

Restricciones tensor

BiasTensor, FilterTensor, InputTensor y OutputTensor deben tener el mismo DataType y DimensionCount.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_4_0 y versiones posteriores

Tensor Clase Dimensions Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada { BatchCount, InputChannelCount, [InputDepth], [InputHeight], InputWidth } 3 to 5 FLOAT32, FLOAT16
FilterTensor Entrada { FilterBatchCount, FilterChannelCount, [FilterDepth], [FilterHeight], FilterWidth } 3 to 5 FLOAT32, FLOAT16
BiasTensor Entrada opcional { 1, OutputChannelCount, [1], [1], 1 } 3 to 5 FLOAT32, FLOAT16
OutputTensor Resultados { BatchCount, OutputChannelCount, [OutputDepth], [OutputHeight], OutputWidth } 3 to 5 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_1_0 y versiones posteriores

Tensor Clase Dimensions Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada { BatchCount, InputChannelCount, [InputDepth], InputHeight, InputWidth } De 4 a 5 FLOAT32, FLOAT16
FilterTensor Entrada { FilterBatchCount, FilterChannelCount, [FilterDepth], FilterHeight, FilterWidth } De 4 a 5 FLOAT32, FLOAT16
BiasTensor Entrada opcional { 1, OutputChannelCount, [1], 1, 1 } De 4 a 5 FLOAT32, FLOAT16
OutputTensor Resultados { BatchCount, OutputChannelCount, [OutputDepth], OutputHeight, OutputWidth } De 4 a 5 FLOAT32, FLOAT16

Requisitos

Requisito Valor
Header directml.h

Consulte también