From ed5a492ba791d8c8b3334749d4ae946b8f11d13d Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Thu, 13 Sep 2018 16:22:01 +0100 Subject: COMPMID-1586: Add support for NHWC CLDeconvolutionLayer COMPMID-1651: Fix QASYMM8 CLDeconvolutionLayer This patch also extends the range of values used for testing Convolution and Deconvolution to cover quantized [-1.0f, 1.0f]. Change-Id: I8b280669db67bb3ec25bf5d411c8f5954f5b0dab Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/149869 Reviewed-by: Michalis Spyrou Tested-by: bsgcomp --- .../runtime/NEON/functions/NEDeconvolutionLayer.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h') diff --git a/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h index 0cca555621..73870093b7 100644 --- a/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h +++ b/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h @@ -46,8 +46,12 @@ namespace arm_compute * specified value where a < stride - 1 that increases the padding top and right of the input image. * * The relation between input to output is as follows: - * width_output = round((width_input − 1) ∗ (stride_x - 1) − 2 ∗ padding_x + kernel_x + inner_border_right ) - * height_output = round((height_input − 1) ∗ (stride_y - 1) − 2 ∗ padding_y + kernel_y + inner_border_top ) + * \f[ + * width\_output = (width\_input - 1) \cdot stride\_x - 2 \cdot padding\_x + kernel\_x + * \f] + * \f[ + * height\_output = (height\_input - 1) \cdot stride\_y - 2 \cdot padding\_y + kernel\_y + * \f] * * where * width is the size of the first input dimension. @@ -55,12 +59,15 @@ namespace arm_compute * width_output is the size of the first output dimension. * height_output is the size of the second output dimension. * kernel_x and kernel_y are the convolution sizes in x and y. - * inner_border_right and inner_border_top the number of zeros added to the top and right edges of the input. * stride_x and stride_y is the input stride of the first and second dimension. * - * This function calls the following NEON kernels: + * The weights used by Deconvolution are supposed to be the same as the ones used for Convolution. Therefore, it will be necessary to use the weights in the + * reverse order to perform an actual convolution. This is achieved by using the @ref CPPFlipWeightsKernel. * - * -# @ref NEDirectConvolutionLayer + * This function calls the following NEON kernels/functions: + * + * -# @ref CPPUpsample + * -# @ref NEConvolutionLayer * */ class NEDeconvolutionLayer : public IFunction -- cgit v1.2.1