aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2020-09-10 20:26:48 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2020-09-11 13:47:54 +0000
commit16cf3c2318978580006633ea4d5eccdd8ba1194a (patch)
treebf2614fcf8ab984f59f85d8502c65a57527ca1a6
parentcffb2a34d89be3b175a8ba1ee8083b8ec256a633 (diff)
downloadComputeLibrary-16cf3c2318978580006633ea4d5eccdd8ba1194a.tar.gz
COMPMID-3764: Failures on fp16 for L2NormalizationLayer when zero inputs
Alter the default lower bound used for the norm from 1e-12 to 1e-6 to be representable by the half precision dynamic range. Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Change-Id: I8d3103b8345eb4c464a76b4f4ba5ef596d81da93 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3960 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
-rw-r--r--arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h6
-rw-r--r--tests/validation/NEON/L2NormalizeLayer.cpp8
2 files changed, 7 insertions, 7 deletions
diff --git a/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h b/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h
index 31e0c61409..66750a5411 100644
--- a/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 Arm Limited.
+ * Copyright (c) 2017-2020 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -55,7 +55,7 @@ public:
* @param[in] axis Axis along which to reduce. Negative values wrap around. Maximum supported actual reduction axis : 2
* @param[in] epsilon (Optional) Lower bound value for the normalization.
*/
- void configure(ITensor *input, ITensor *output, int axis, float epsilon = 1e-12f);
+ void configure(ITensor *input, ITensor *output, int axis, float epsilon = 1e-6f);
/** Static function to check if given info will lead to a valid configuration of @ref NEL2NormalizeLayer.
*
@@ -66,7 +66,7 @@ public:
*
* @return a status
*/
- static Status validate(const ITensorInfo *input, const ITensorInfo *output, int axis, float epsilon = 1e-12f);
+ static Status validate(const ITensorInfo *input, const ITensorInfo *output, int axis, float epsilon = 1e-6f);
// Inherited methods overridden:
void run() override;
diff --git a/tests/validation/NEON/L2NormalizeLayer.cpp b/tests/validation/NEON/L2NormalizeLayer.cpp
index 37146f4015..82e4beb05a 100644
--- a/tests/validation/NEON/L2NormalizeLayer.cpp
+++ b/tests/validation/NEON/L2NormalizeLayer.cpp
@@ -100,7 +100,7 @@ TEST_SUITE(FP32)
FIXTURE_DATA_TEST_CASE(RunSmall, NEL2NormalizeLayerFixture<float>, framework::DatasetMode::PRECOMMIT,
combine(combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::F32)), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
framework::dataset::make("Axis", { -1, 0, 1, 2 })),
- framework::dataset::make("Epsilon", { 1e-12 })))
+ framework::dataset::make("Epsilon", { 1e-6 })))
{
// Validate output
validate(Accessor(_target), _reference, tolerance_f32);
@@ -109,7 +109,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEL2NormalizeLayerFixture<float>, framework::Da
FIXTURE_DATA_TEST_CASE(RunLarge, NEL2NormalizeLayerFixture<float>, framework::DatasetMode::NIGHTLY,
combine(combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::F32)), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
framework::dataset::make("Axis", { -1, 0, 2 })),
- framework::dataset::make("Epsilon", { 1e-12 })))
+ framework::dataset::make("Epsilon", { 1e-6 })))
{
// Validate output
validate(Accessor(_target), _reference, tolerance_f32);
@@ -121,7 +121,7 @@ TEST_SUITE(FP16)
FIXTURE_DATA_TEST_CASE(RunSmall, NEL2NormalizeLayerFixture<half>, framework::DatasetMode::PRECOMMIT,
combine(combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::F16)), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
framework::dataset::make("Axis", { -1, 0, 1, 2 })),
- framework::dataset::make("Epsilon", { 1e-12 })))
+ framework::dataset::make("Epsilon", { 1e-6 })))
{
// Validate output
validate(Accessor(_target), _reference, tolerance_f16);
@@ -130,7 +130,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEL2NormalizeLayerFixture<half>, framework::Dat
FIXTURE_DATA_TEST_CASE(RunLarge, NEL2NormalizeLayerFixture<half>, framework::DatasetMode::NIGHTLY,
combine(combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::F16)), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
framework::dataset::make("Axis", { -1, 0, 2 })),
- framework::dataset::make("Epsilon", { 1e-12 })))
+ framework::dataset::make("Epsilon", { 1e-6 })))
{
// Validate output
validate(Accessor(_target), _reference, tolerance_f16);