diff options
author | Manuel Bottini <manuel.bottini@arm.com> | 2019-05-14 10:38:30 +0100 |
---|---|---|
committer | Manuel Bottini <manuel.bottini@arm.com> | 2019-05-14 16:13:58 +0000 |
commit | 4b5c588ed5bbf635bfb4d20b662db417caa4558f (patch) | |
tree | 25d33b5020ebfa6b19b9a9870f682df51b17ebc3 /src/runtime/CL/functions | |
parent | 2388de12aa5e71f4e295179b4ea344e3e306556a (diff) | |
download | ComputeLibrary-4b5c588ed5bbf635bfb4d20b662db417caa4558f.tar.gz |
COMPMID-2248
L2NormalizeLayer: negative axis
Change-Id: Ic164d7a9ddf1615a2e3b0e10430c34194a70f221
Signed-off-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-on: https://review.mlplatform.org/c/1127
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/CL/functions')
-rw-r--r-- | src/runtime/CL/functions/CLL2NormalizeLayer.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/runtime/CL/functions/CLL2NormalizeLayer.cpp b/src/runtime/CL/functions/CLL2NormalizeLayer.cpp index 136cb5edef..e76e4f601e 100644 --- a/src/runtime/CL/functions/CLL2NormalizeLayer.cpp +++ b/src/runtime/CL/functions/CLL2NormalizeLayer.cpp @@ -34,25 +34,31 @@ namespace arm_compute { +namespace +{ +constexpr int max_input_tensor_dim = 3; +} // namespace + CLL2NormalizeLayer::CLL2NormalizeLayer(std::shared_ptr<IMemoryManager> memory_manager) : _memory_group(std::move(memory_manager)), _reduce_func(), _normalize_kernel(), _sumsq() { } -void CLL2NormalizeLayer::configure(ICLTensor *input, ICLTensor *output, unsigned int axis, float epsilon) +void CLL2NormalizeLayer::configure(ICLTensor *input, ICLTensor *output, int axis, float epsilon) { // Manage intermediate buffers _memory_group.manage(&_sumsq); // Configure kernels - _reduce_func.configure(input, &_sumsq, axis, ReductionOperation::SUM_SQUARE); + const uint32_t actual_axis = wrap_around(axis, max_input_tensor_dim); + _reduce_func.configure(input, &_sumsq, actual_axis, ReductionOperation::SUM_SQUARE); _normalize_kernel.configure(input, &_sumsq, output, axis, epsilon); // Allocate intermediate tensor _sumsq.allocator()->allocate(); } -Status CLL2NormalizeLayer::validate(const ITensorInfo *input, const ITensorInfo *output, unsigned int axis, float epsilon) +Status CLL2NormalizeLayer::validate(const ITensorInfo *input, const ITensorInfo *output, int axis, float epsilon) { TensorShape shape(input->tensor_shape()); @@ -61,10 +67,11 @@ Status CLL2NormalizeLayer::validate(const ITensorInfo *input, const ITensorInfo sum_sq.set_data_type(input->data_type()); sum_sq.set_tensor_shape(shape); - ARM_COMPUTE_RETURN_ON_ERROR(CLReductionOperation::validate(input, &sum_sq, axis, ReductionOperation::SUM_SQUARE)); + const uint32_t actual_axis = wrap_around(axis, max_input_tensor_dim); + ARM_COMPUTE_RETURN_ON_ERROR(CLReductionOperation::validate(input, &sum_sq, actual_axis, ReductionOperation::SUM_SQUARE)); // Reduce shape on axis - shape.set(axis, 1); + shape.set(actual_axis, 1); sum_sq.set_tensor_shape(shape); ARM_COMPUTE_RETURN_ON_ERROR(CLL2NormalizeLayerKernel::validate(input, &sum_sq, output, axis, epsilon)); |