From e2696b1f9bb28b69beff99f54addd48f60823ddb Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Thu, 3 Dec 2020 20:37:43 +0000 Subject: Wrap Flatten layer over reshape Flatten layer is lowered into a Reshape layer. Remove (CL/NE)FlatternLayerKernel. Partially Resolves: COMPMID-3996 Signed-off-by: Georgios Pinitas Change-Id: Id9e2ddfe2e2dd793541badff3490c05e4c908f88 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4660 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio --- arm_compute/runtime/CL/functions/CLFlattenLayer.h | 11 +++++++++-- arm_compute/runtime/NEON/functions/NEFlattenLayer.h | 11 +++++++++-- arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h | 4 +--- 3 files changed, 19 insertions(+), 7 deletions(-) (limited to 'arm_compute/runtime') diff --git a/arm_compute/runtime/CL/functions/CLFlattenLayer.h b/arm_compute/runtime/CL/functions/CLFlattenLayer.h index f5f4ff554f..ffe06aa610 100644 --- a/arm_compute/runtime/CL/functions/CLFlattenLayer.h +++ b/arm_compute/runtime/CL/functions/CLFlattenLayer.h @@ -25,7 +25,8 @@ #define ARM_COMPUTE_CLFLATTENLAYER_H #include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/ICLSimpleFunction.h" +#include "arm_compute/runtime/CL/functions/CLReshapeLayer.h" +#include "arm_compute/runtime/IFunction.h" namespace arm_compute { @@ -38,7 +39,7 @@ class ITensorInfo; * -# @ref CLFlattenLayerKernel * */ -class CLFlattenLayer : public ICLSimpleFunction +class CLFlattenLayer : public IFunction { public: /** Initialise the kernel's input and output. @@ -68,6 +69,12 @@ public: * @return a status */ static Status validate(const ITensorInfo *input, const ITensorInfo *output); + + // Inherited methods overridden: + void run() override; + +private: + CLReshapeLayer _reshape{}; }; } // namespace arm_compute diff --git a/arm_compute/runtime/NEON/functions/NEFlattenLayer.h b/arm_compute/runtime/NEON/functions/NEFlattenLayer.h index 9f0d5226de..1104aac77f 100644 --- a/arm_compute/runtime/NEON/functions/NEFlattenLayer.h +++ b/arm_compute/runtime/NEON/functions/NEFlattenLayer.h @@ -25,7 +25,8 @@ #define ARM_COMPUTE_NEFLATTENLAYER_H #include "arm_compute/core/Types.h" -#include "arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h" +#include "arm_compute/runtime/IFunction.h" +#include "arm_compute/runtime/NEON/functions/NEReshapeLayer.h" namespace arm_compute { @@ -33,7 +34,7 @@ class ITensor; class ITensorInfo; /** Basic function to execute flatten layer kernel. */ -class NEFlattenLayer : public INESimpleFunctionNoBorder +class NEFlattenLayer : public IFunction { public: /** Initialise the kernel's input and output. @@ -54,6 +55,12 @@ public: * @return a status */ static Status validate(const ITensorInfo *input, const ITensorInfo *output); + + // Inherited methods overridden: + void run() override; + +private: + NEReshapeLayer _reshape{}; }; } // namespace arm_compute diff --git a/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h b/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h index 0a7748a94b..8bf3e95f81 100644 --- a/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h +++ b/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h @@ -35,8 +35,6 @@ namespace arm_compute { -class NEFlattenLayerKernel; - /** Basic function to reshape the weights of Fully Connected layer with NEON. This function calls the following kernels: * * @note The fully connected layer accepts "weights" tensors only with 2 dimensions. @@ -181,7 +179,7 @@ private: MemoryGroup _memory_group; IWeightsManager *_weights_manager; - std::unique_ptr _flatten_kernel; + NEFlattenLayer _flatten; NEConvertFullyConnectedWeights _convert_weights; weights_transformations::NEConvertFullyConnectedWeightsManaged _convert_weights_managed; NEFullyConnectedLayerReshapeWeights _reshape_weights_function; -- cgit v1.2.1