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 |