diff options
author | Matthew Sloyan <matthew.sloyan@arm.com> | 2020-12-16 12:50:01 +0000 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2020-12-17 12:20:58 +0000 |
commit | 7515d0730acc926316886a85401bcd36f640627e (patch) | |
tree | 97b312e641e7419b14dd6f7b1686afc6b56e788b /src | |
parent | df82f3abc8acc90acfd56f18744a8cae201a759a (diff) | |
download | armnn-7515d0730acc926316886a85401bcd36f640627e.tar.gz |
IVGCVSW-5614 Enable Hard Swish and Elu activations
* Enabled Hard Swish and Elu in TfLiteDelegate
* Added support for Elu in TfLiteParser
Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com>
Change-Id: If09321b58568a98e14cabce610a1586556da041e
Diffstat (limited to 'src')
-rw-r--r-- | src/armnnTfLiteParser/TensorFlowLiteSupport.md | 4 | ||||
-rw-r--r-- | src/armnnTfLiteParser/TfLiteParser.cpp | 14 | ||||
-rw-r--r-- | src/armnnTfLiteParser/TfLiteParser.hpp | 1 | ||||
-rw-r--r-- | src/armnnTfLiteParser/test/Activations.cpp | 12 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/armnnTfLiteParser/TensorFlowLiteSupport.md b/src/armnnTfLiteParser/TensorFlowLiteSupport.md index faad3d0fa9..118fed7f7c 100644 --- a/src/armnnTfLiteParser/TensorFlowLiteSupport.md +++ b/src/armnnTfLiteParser/TensorFlowLiteSupport.md @@ -22,10 +22,14 @@ The Arm NN SDK TensorFlow Lite parser currently supports the following operators * DIV +* ELU + * EXP * FULLY_CONNECTED, Supported Fused Activation: RELU , RELU6 , TANH, NONE +* HARD_SWISH + * LEAKY_RELU * LOGISTIC diff --git a/src/armnnTfLiteParser/TfLiteParser.cpp b/src/armnnTfLiteParser/TfLiteParser.cpp index c3d56b13d3..9d9f4fa14b 100644 --- a/src/armnnTfLiteParser/TfLiteParser.cpp +++ b/src/armnnTfLiteParser/TfLiteParser.cpp @@ -549,6 +549,7 @@ TfLiteParser::TfLiteParser(const Optional<ITfLiteParser::TfLiteParserOptions>& o m_ParserFunctions[tflite::BuiltinOperator_CUSTOM] = &TfLiteParser::ParseCustomOperator; m_ParserFunctions[tflite::BuiltinOperator_DEPTHWISE_CONV_2D] = &TfLiteParser::ParseDepthwiseConv2D; m_ParserFunctions[tflite::BuiltinOperator_DEQUANTIZE] = &TfLiteParser::ParseDequantize; + m_ParserFunctions[tflite::BuiltinOperator_ELU] = &TfLiteParser::ParseElu; m_ParserFunctions[tflite::BuiltinOperator_EXP] = &TfLiteParser::ParseExp; m_ParserFunctions[tflite::BuiltinOperator_FULLY_CONNECTED] = &TfLiteParser::ParseFullyConnected; m_ParserFunctions[tflite::BuiltinOperator_HARD_SWISH] = &TfLiteParser::ParseHardSwish; @@ -1928,6 +1929,11 @@ void TfLiteParser::ParseTanH(size_t subgraphIndex, size_t operatorIndex) ParseActivation(subgraphIndex,operatorIndex,ActivationFunction::TanH); } +void TfLiteParser::ParseElu(size_t subgraphIndex, size_t operatorIndex) +{ + ParseActivation(subgraphIndex, operatorIndex, ActivationFunction::Elu); +} + void TfLiteParser::ParseHardSwish(size_t subgraphIndex, size_t operatorIndex) { ParseActivation(subgraphIndex, operatorIndex, ActivationFunction::HardSwish); @@ -1982,9 +1988,17 @@ void TfLiteParser::ParseActivation(size_t subgraphIndex, size_t operatorIndex, A activationDesc.m_A = options->alpha; break; } + case ActivationFunction::Elu: + { + layerName += fmt::format("ELU:{}:{}", subgraphIndex, operatorIndex); + activationDesc.m_A = 1.0f; + break; + } case ActivationFunction::HardSwish: + { layerName += fmt::format("HARDSWISH:{}:{}", subgraphIndex, operatorIndex); break; + } default: { throw ParseException( diff --git a/src/armnnTfLiteParser/TfLiteParser.hpp b/src/armnnTfLiteParser/TfLiteParser.hpp index 9b081a5db9..a8ddc69df8 100644 --- a/src/armnnTfLiteParser/TfLiteParser.hpp +++ b/src/armnnTfLiteParser/TfLiteParser.hpp @@ -102,6 +102,7 @@ private: void ParseDepthwiseConv2D(size_t subgraphIndex, size_t operatorIndex); void ParseDequantize(size_t subgraphIndex, size_t operatorIndex); void ParseDetectionPostProcess(size_t subgraphIndex, size_t operatorIndex); + void ParseElu(size_t subgraphIndex, size_t operatorIndex); void ParseExp(size_t subgraphIndex, size_t operatorIndex); void ParseFullyConnected(size_t subgraphIndex, size_t operatorIndex); void ParseHardSwish(size_t subgraphIndex, size_t operatorIndex); diff --git a/src/armnnTfLiteParser/test/Activations.cpp b/src/armnnTfLiteParser/test/Activations.cpp index e57477e620..f74c22d107 100644 --- a/src/armnnTfLiteParser/test/Activations.cpp +++ b/src/armnnTfLiteParser/test/Activations.cpp @@ -106,6 +106,18 @@ BOOST_FIXTURE_TEST_CASE(ParseTanH, TanHFixture) { -0.09966799f, -0.19737528f, -0.29131261f, -0.379949f, 0.09966799f, 0.19737528f, 0.29131261f }); } +struct EluFixture : ActivationFixture +{ + EluFixture() : ActivationFixture("ELU", "FLOAT32") {} +}; + +BOOST_FIXTURE_TEST_CASE(ParseElu, EluFixture) +{ + RunTest<2, armnn::DataType::Float32>(0, + { -2.0f, -1.0f, -0.0f, 0.0f, 1.0f, 2.0f, 3.0f }, + { -0.86466471676f, -0.63212055882f, -0.0f, 0.0f, 1.0f, 2.0f, 3.0f }); +} + struct HardSwishFixture : ActivationFixture { HardSwishFixture() : ActivationFixture("HARD_SWISH", "FLOAT32") {} |