From ea0fc212e3a0740525659e1b68851e6c379b3c43 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EA=B9=80=EC=A0=95=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Senior=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Fri, 4 May 2018 10:21:05 +0900 Subject: [PATCH] Apply insertFusedActivationLayer() to other CL layers. (#1082) This commit applies insertFusedActivationLayer() to CL layers (Conv2D and Pooling). Signed-off-by: Junghyun Kim --- libs/kernel/acl/src/cl/Conv2D.cpp | 14 +------------- libs/kernel/acl/src/cl/Pooling.cpp | 28 ++-------------------------- 2 files changed, 3 insertions(+), 39 deletions(-) diff --git a/libs/kernel/acl/src/cl/Conv2D.cpp b/libs/kernel/acl/src/cl/Conv2D.cpp index bfbb201..4783bdc 100644 --- a/libs/kernel/acl/src/cl/Conv2D.cpp +++ b/libs/kernel/acl/src/cl/Conv2D.cpp @@ -61,8 +61,6 @@ bool convFloat32(const float* inputData, const nnfw::rt::Shape& inputShape, CLUniqueTensor bias(arm_compute::TensorInfo(bias_shape, arm_compute::Format::F32)); CLUniqueTensor filter(arm_compute::TensorInfo(filter_shape, arm_compute::Format::F32)); - assert(activation == ANEURALNETWORKS_FUSED_NONE || activation == ANEURALNETWORKS_FUSED_RELU); - std::vector> fns; auto conv_f = std::make_shared(); @@ -71,17 +69,7 @@ bool convFloat32(const float* inputData, const nnfw::rt::Shape& inputShape, fns.emplace_back(conv_f); - if (ANEURALNETWORKS_FUSED_RELU == activation) - { - auto relu_f = std::make_shared(); - - const arm_compute::ActivationLayerInfo relu_info{arm_compute::ActivationLayerInfo::ActivationFunction::RELU}; - - // Do in-place update - relu_f->configure(output.ptr(), nullptr, relu_info); - - fns.emplace_back(relu_f); - } + util::insertFusedActivationLayer(output, activation, fns); input.allocate(); output.allocate(); diff --git a/libs/kernel/acl/src/cl/Pooling.cpp b/libs/kernel/acl/src/cl/Pooling.cpp index 5a280f8..e22eacc 100644 --- a/libs/kernel/acl/src/cl/Pooling.cpp +++ b/libs/kernel/acl/src/cl/Pooling.cpp @@ -38,8 +38,6 @@ bool maxPoolFloat32(const float* inputData, const nnfw::rt::Shape& inputShape, arm_compute::TensorShape input_shape = util::fromNNShape(inputShape); arm_compute::TensorShape output_shape = util::fromNNShape(outputShape); - assert(activation == ANEURALNETWORKS_FUSED_NONE || activation == ANEURALNETWORKS_FUSED_RELU); - std::vector> fns; arm_compute::PadStrideInfo pad_info = arm_compute::PadStrideInfo(stride_width, stride_height, @@ -62,17 +60,7 @@ bool maxPoolFloat32(const float* inputData, const nnfw::rt::Shape& inputShape, input.allocate(); output.allocate(); - if (ANEURALNETWORKS_FUSED_RELU == activation) - { - auto relu_f = std::make_shared(); - - const arm_compute::ActivationLayerInfo relu_info{arm_compute::ActivationLayerInfo::ActivationFunction::RELU}; - - // Do in-place update - relu_f->configure(output.ptr(), nullptr, relu_info); - - fns.emplace_back(relu_f); - } + util::insertFusedActivationLayer(output, activation, fns); TensorAccess(input.ref(), inputData, inputShape); @@ -99,8 +87,6 @@ bool averagePoolFloat32(const float* inputData, const nnfw::rt::Shape& inputShap arm_compute::TensorShape input_shape = util::fromNNShape(inputShape); arm_compute::TensorShape output_shape = util::fromNNShape(outputShape); - assert(activation == ANEURALNETWORKS_FUSED_NONE || activation == ANEURALNETWORKS_FUSED_RELU); - std::vector> fns; arm_compute::PadStrideInfo pad_info = arm_compute::PadStrideInfo(stride_width, stride_height, @@ -123,17 +109,7 @@ bool averagePoolFloat32(const float* inputData, const nnfw::rt::Shape& inputShap input.allocate(); output.allocate(); - if (ANEURALNETWORKS_FUSED_RELU == activation) - { - auto relu_f = std::make_shared(); - - const arm_compute::ActivationLayerInfo relu_info{arm_compute::ActivationLayerInfo::ActivationFunction::RELU}; - - // Do in-place update - relu_f->configure(output.ptr(), nullptr, relu_info); - - fns.emplace_back(relu_f); - } + util::insertFusedActivationLayer(output, activation, fns); TensorAccess(input.ref(), inputData, inputShape); -- 2.7.4