Compute Library
18.05
|
Function to run the deconvolution layer. More...
#include <NEDeconvolutionLayer.h>
Public Member Functions | |
NEDeconvolutionLayer (std::shared_ptr< IMemoryManager > memory_manager=nullptr) | |
Default constructor. More... | |
NEDeconvolutionLayer (const NEDeconvolutionLayer &)=delete | |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
NEDeconvolutionLayer & | operator= (const NEDeconvolutionLayer &)=delete |
Prevent instances of this class from being copied (As this class contains pointers) More... | |
NEDeconvolutionLayer (NEDeconvolutionLayer &&)=default | |
Allow instances of this class to be moved. More... | |
NEDeconvolutionLayer & | operator= (NEDeconvolutionLayer &&)=default |
Allow instances of this class to be moved. More... | |
virtual | ~NEDeconvolutionLayer ()=default |
Default destructor. More... | |
void | configure (ITensor *input, const ITensor *weights, const ITensor *bias, ITensor *output, const PadStrideInfo &info, unsigned int inner_border_right, unsigned int inner_border_top) |
Set the input, weights, biases and output tensors. More... | |
void | run () override |
Run the kernels contained in the function. More... | |
Public Member Functions inherited from IFunction | |
virtual | ~IFunction ()=default |
Destructor. More... | |
virtual void | prepare () |
Prepare the function for executing. More... | |
Static Public Member Functions | |
static Status | validate (const ITensorInfo *input, const ITensorInfo *weights, const ITensorInfo *bias, const ITensorInfo *output, const PadStrideInfo &info, unsigned int inner_border_right, unsigned int inner_border_top) |
Static function to check if given info will lead to a valid configuration of NEDeconvolutionLayer. More... | |
Function to run the deconvolution layer.
Deconvolution Layer is the backward pass of Convolution Layer. First we transform the input depending on the stride and pad info and then perfrom a 1x1 convolution pass. Input stride defines how many zeroes we should put between each element of the input, pad is the amount of padding and finaly a is a user 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 )
where width is the size of the first input dimension. height is the size of the second input dimension. 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:
Definition at line 65 of file NEDeconvolutionLayer.h.
NEDeconvolutionLayer | ( | std::shared_ptr< IMemoryManager > | memory_manager = nullptr | ) |
Default constructor.
|
delete |
Prevent instances of this class from being copied (As this class contains pointers)
|
default |
Allow instances of this class to be moved.
|
virtualdefault |
Default destructor.
void configure | ( | ITensor * | input, |
const ITensor * | weights, | ||
const ITensor * | bias, | ||
ITensor * | output, | ||
const PadStrideInfo & | info, | ||
unsigned int | inner_border_right, | ||
unsigned int | inner_border_top | ||
) |
Set the input, weights, biases and output tensors.
[in,out] | input | Input tensor. 3 lower dimensions represent a single input, and an optional 4th dimension for batch of inputs. Data types supported: F32. |
[in] | weights | The 4d weights with dimensions [width, height, IFM, OFM]. Data type supported: Same as input . |
[in] | bias | Optional, ignored if NULL. The biases have one dimension. Data type supported: Same as input . |
[out] | output | Output tensor. The output has the same number of dimensions as the input . |
[in] | info | Contains padding and policies to be used in the deconvolution, this is decribed in PadStrideInfo. |
[in] | inner_border_right | The number of zeros added to right edge of the input. |
[in] | inner_border_top | The number of zeros added to top edge of the input. |
|
delete |
Prevent instances of this class from being copied (As this class contains pointers)
|
default |
Allow instances of this class to be moved.
|
overridevirtual |
Run the kernels contained in the function.
For NEON kernels:
For OpenCL kernels:
Implements IFunction.
|
static |
Static function to check if given info will lead to a valid configuration of NEDeconvolutionLayer.
[in] | input | Input tensor info. 3 lower dimensions represent a single input, and an optional 4th dimension for batch of inputs. Data types supported: F32. |
[in] | weights | The 4d weights info with dimensions [width, height, IFM, OFM]. Data type supported: Same as input . |
[in] | bias | (Optional) The biases have one dimension. Data type supported: Same as input . |
[in] | output | Output tensor info. The output has the same number of dimensions as the input . |
[in] | info | Contains padding and policies to be used in the deconvolution, this is decribed in PadStrideInfo. |
[in] | inner_border_right | The number of zeros added to right edge of the input. |
[in] | inner_border_top | The number of zeros added to top edge of the input. |