From a83af7b388a1ac721c6a85b0e80ac2950687dfad Mon Sep 17 00:00:00 2001 From: Jan Eilers Date: Wed, 18 Mar 2020 15:58:11 +0000 Subject: IVGCVSW-4446 Add HardSwish EndToEnd tests * adds convert from armnn HardSwish to Acl HardSwish * adds EndToEnd tests for Ref, Cl and Neon Signed-off-by: Jan Eilers Change-Id: If997dad783ff45d7f061254e7e30bb69d4d4d564 --- .../test/ActivationEndToEndTestImpl.hpp | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src/backends/backendsCommon') diff --git a/src/backends/backendsCommon/test/ActivationEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/ActivationEndToEndTestImpl.hpp index 23884b0c20..1b735bed5e 100644 --- a/src/backends/backendsCommon/test/ActivationEndToEndTestImpl.hpp +++ b/src/backends/backendsCommon/test/ActivationEndToEndTestImpl.hpp @@ -32,6 +32,8 @@ float GetActivationTolerance(const armnn::ActivationFunction& activationFunction // The following values are taken from ArmComputeLibrary/tests/validation/CL/ActivationLayer.cpp case ActivationFunction::Elu: return (dataType == DataType::Float16 ? 0.01f : 0.00001f); + case ActivationFunction::HardSwish: + return (dataType == DataType::Float16 ? 0.01f : defaultTolerance); default: return defaultTolerance; } @@ -123,7 +125,7 @@ void EluEndToEndTest(const std::vector& backends) 1.0f, 2.0f, 3.0f, 4.0f }; std::vector floatExpectedOutputData{ -0.86466471676f, -0.63212055882f, -0.0f, 0.0f, - 1.0f , 2.0f, 3.0f, 4.0f }; + 1.0f , 2.0f , 3.0f, 4.0f }; float qScale = 1.0f; int32_t qOffset = 0; @@ -140,4 +142,33 @@ void EluEndToEndTest(const std::vector& backends) descriptor); } +/** Executes an end to end test for HardSwish activation with specific input and expected-output data + * + * @tparam ArmnnType The armnn data type for the input and expected-output data + * @param backends The backends on which to run the test + */ +template> +void HardSwishEndToEndTest(const std::vector& backends) +{ + std::vector floatInputData{ -2.0f, -1.0f, -0.5f, 0.0f, + 1.0f, 2.0f, 3.0f, 4.0f }; + + std::vector floatExpectedOutputData{ -0.33333333333f, -0.33333333333f, -0.208333f, 0.0f, + 0.66666666667f, 1.66666666667f, 3.0f , 4.0f }; + + float qScale = 1.0f; + int32_t qOffset = 0; + armnn::TensorInfo inputInfo({ 2, 2, 2, 1 }, ArmnnType, qScale, qOffset); + armnn::TensorInfo outputInfo({ 2, 2, 2, 1 }, ArmnnType, qScale, qOffset); + + armnn::ActivationDescriptor descriptor(ActivationFunction::HardSwish, 1.0); + + ActivationEndToEndImpl(backends, + floatInputData, + floatExpectedOutputData, + inputInfo, + outputInfo, + descriptor); +} + } // anonymous namespace \ No newline at end of file -- cgit v1.2.1