diff options
Diffstat (limited to 'src/runtime')
3 files changed, 32 insertions, 13 deletions
diff --git a/src/runtime/CL/functions/CLBatchNormalizationLayer.cpp b/src/runtime/CL/functions/CLBatchNormalizationLayer.cpp index 58215c3c3e..f87ea6ea06 100644 --- a/src/runtime/CL/functions/CLBatchNormalizationLayer.cpp +++ b/src/runtime/CL/functions/CLBatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -37,17 +37,18 @@ CLBatchNormalizationLayer::CLBatchNormalizationLayer() { } -void CLBatchNormalizationLayer::configure(ICLTensor *input, ICLTensor *output, const ICLTensor *mean, const ICLTensor *var, const ICLTensor *beta, const ICLTensor *gamma, float epsilon) +void CLBatchNormalizationLayer::configure(ICLTensor *input, ICLTensor *output, const ICLTensor *mean, const ICLTensor *var, const ICLTensor *beta, const ICLTensor *gamma, float epsilon, + ActivationLayerInfo act_info) { - _norm_kernel.configure(input, output, mean, var, beta, gamma, epsilon); + _norm_kernel.configure(input, output, mean, var, beta, gamma, epsilon, act_info); } Status CLBatchNormalizationLayer::validate(const ITensorInfo *input, const ITensorInfo *output, const ITensorInfo *mean, const ITensorInfo *var, const ITensorInfo *beta, const ITensorInfo *gamma, - float epsilon) + float epsilon, ActivationLayerInfo act_info) { - return CLBatchNormalizationLayerKernel::validate(input, output, mean, var, beta, gamma, epsilon); + return CLBatchNormalizationLayerKernel::validate(input, output, mean, var, beta, gamma, epsilon, act_info); } void CLBatchNormalizationLayer::run() diff --git a/src/runtime/GLES_COMPUTE/functions/GCBatchNormalizationLayer.cpp b/src/runtime/GLES_COMPUTE/functions/GCBatchNormalizationLayer.cpp index 99bdf43c05..cc5e8f49f2 100755 --- a/src/runtime/GLES_COMPUTE/functions/GCBatchNormalizationLayer.cpp +++ b/src/runtime/GLES_COMPUTE/functions/GCBatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -37,9 +37,10 @@ GCBatchNormalizationLayer::GCBatchNormalizationLayer() { } -void GCBatchNormalizationLayer::configure(const IGCTensor *input, IGCTensor *output, const IGCTensor *mean, const IGCTensor *var, const IGCTensor *beta, const IGCTensor *gamma, float epsilon) +void GCBatchNormalizationLayer::configure(const IGCTensor *input, IGCTensor *output, const IGCTensor *mean, const IGCTensor *var, const IGCTensor *beta, const IGCTensor *gamma, float epsilon, + ActivationLayerInfo act_info) { - _norm_kernel.configure(input, output, mean, var, beta, gamma, epsilon); + _norm_kernel.configure(input, output, mean, var, beta, gamma, epsilon, act_info); } void GCBatchNormalizationLayer::run() diff --git a/src/runtime/NEON/functions/NEBatchNormalizationLayer.cpp b/src/runtime/NEON/functions/NEBatchNormalizationLayer.cpp index f6be00169d..b3753e842d 100644 --- a/src/runtime/NEON/functions/NEBatchNormalizationLayer.cpp +++ b/src/runtime/NEON/functions/NEBatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2018 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -33,23 +33,40 @@ using namespace arm_compute; NEBatchNormalizationLayer::NEBatchNormalizationLayer() - : _norm_kernel() + : _norm_kernel(), _act_func(), _act_info_enabled(false) { } -void NEBatchNormalizationLayer::configure(ITensor *input, ITensor *output, const ITensor *mean, const ITensor *var, const ITensor *beta, const ITensor *gamma, float epsilon) +void NEBatchNormalizationLayer::configure(ITensor *input, ITensor *output, const ITensor *mean, const ITensor *var, const ITensor *beta, const ITensor *gamma, float epsilon, + ActivationLayerInfo act_info) { + _act_info_enabled = act_info.enabled(); + // Configure kernel _norm_kernel.configure(input, output, mean, var, beta, gamma, epsilon); + if(_act_info_enabled) + { + _act_func.configure(output, nullptr, act_info); + } } Status NEBatchNormalizationLayer::validate(const ITensorInfo *input, const ITensorInfo *output, const ITensorInfo *mean, const ITensorInfo *var, const ITensorInfo *beta, const ITensorInfo *gamma, - float epsilon) + float epsilon, ActivationLayerInfo act_info) { - return NEBatchNormalizationLayerKernel::validate(input, output, mean, var, beta, gamma, epsilon); + ARM_COMPUTE_RETURN_ON_ERROR(NEBatchNormalizationLayerKernel::validate(input, output, mean, var, beta, gamma, epsilon)); + if(act_info.enabled()) + { + ARM_COMPUTE_RETURN_ON_ERROR(NEActivationLayer::validate(output, nullptr, act_info)); + } + + return Status{}; } void NEBatchNormalizationLayer::run() { NEScheduler::get().schedule(&_norm_kernel, Window::DimY); + if(_act_info_enabled) + { + _act_func.run(); + } } |