From 3b3c381963a1bfe12e083928a3abb5a9852b199b Mon Sep 17 00:00:00 2001 From: David Monahan Date: Tue, 25 Feb 2020 09:03:29 +0000 Subject: IVGCVSW-4439: Adding Elu support to Activation * Added CpuRef implementation * Added Unit Tests * Added Quantizer Test * Enabled Tests for Neon and CL backends on fp32 only * Added to Serializer Signed-off-by: David Monahan Change-Id: Ic23e1797dbc9352b40678c389d7fe2b836b582ea --- .../test/layerTests/ActivationTestImpl.cpp | 58 ++++++++++++++++++++++ .../test/layerTests/ActivationTestImpl.hpp | 16 ++++++ 2 files changed, 74 insertions(+) (limited to 'src/backends/backendsCommon/test') diff --git a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp index 3f5e6c39e3..1b6e782060 100644 --- a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.cpp @@ -1016,6 +1016,64 @@ LayerTestResult TanhInt16Test( } +template> +LayerTestResult EluTestCommon( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + float qScale, + int32_t qOffset) +{ + std::vector inputData = { + -0.1f, -0.2f, -0.3f, -0.4f, + 0.1f, 0.2f, 0.3f, 0.4f, + -1.0f, -2.0f, -3.0f, -4.0f, + 1.0f, 2.0f, 3.0f, 4.0f + }; + + + const float a = 0.01f; + // Calculate output values for input. + auto f = [a](float value) + { + return (value >= 0) ? value : a * (expf(value) - 1); + }; + std::vector outputExpectedData(inputData.size()); + std::transform(inputData.begin(), inputData.end(), outputExpectedData.begin(), f); + + return SimpleActivationTest(workloadFactory, + memoryManager, + armnn::ActivationFunction::Elu, + a, + 0.0f, + qScale, + qOffset, + inputData, + qScale, + qOffset, + outputExpectedData); +} + +LayerTestResult EluTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return EluTestCommon(workloadFactory, memoryManager, 0.1f, 0); +} + +LayerTestResult EluUint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return EluTestCommon(workloadFactory, memoryManager, 0.1f, 64); +} + +LayerTestResult EluInt16Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return EluTestCommon(workloadFactory, memoryManager, 0.1f, 0); +} + template> LayerTestResult CompareActivationTestImpl( diff --git a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp index 2251ceb8dd..28301188d5 100644 --- a/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp +++ b/src/backends/backendsCommon/test/layerTests/ActivationTestImpl.hpp @@ -148,6 +148,22 @@ LayerTestResult LeakyReLuInt16Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); +// +// Elu +// + +LayerTestResult EluTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult EluUint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult EluInt16Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + // // Abs // -- cgit v1.2.1