diff options
author | Nina Drozd <nina.drozd@arm.com> | 2019-04-09 09:37:38 +0100 |
---|---|---|
committer | Nina Drozd <nina.drozd@arm.com> | 2019-04-09 11:32:39 +0000 |
commit | 998517647d699d602e36f06b40d3f1d1ddaae7be (patch) | |
tree | 4b9505e7476f41ad38960ffc3e1271b32cdea1ad /src | |
parent | 2e6dc3a1c5d47825535db7993ba77eb1596ae99b (diff) | |
download | armnn-998517647d699d602e36f06b40d3f1d1ddaae7be.tar.gz |
IVGCVSW-2845: Add TfLite Parser support for TanH activation layer
* Added ParseTanH in TfLiteParser
* Added testcase for parsing TanH activation in Activations.cpp
* Added new supported TanH operator in TensorflowLiteSupport.md
Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: Ie60f38994d76b077f86828c21c57381bdeeaeb5a
Diffstat (limited to 'src')
-rw-r--r-- | src/armnnTfLiteParser/TensorFlowLiteSupport.md | 2 | ||||
-rw-r--r-- | src/armnnTfLiteParser/TfLiteParser.cpp | 13 | ||||
-rw-r--r-- | src/armnnTfLiteParser/TfLiteParser.hpp | 1 | ||||
-rw-r--r-- | src/armnnTfLiteParser/test/Activations.cpp | 12 |
4 files changed, 28 insertions, 0 deletions
diff --git a/src/armnnTfLiteParser/TensorFlowLiteSupport.md b/src/armnnTfLiteParser/TensorFlowLiteSupport.md index afbe2cec06..821aecc9ec 100644 --- a/src/armnnTfLiteParser/TensorFlowLiteSupport.md +++ b/src/armnnTfLiteParser/TensorFlowLiteSupport.md @@ -56,6 +56,8 @@ The Arm NN SDK TensorFlow Lite parser currently supports the following operators * SUB +* TANH + ## Custom Operator * TFLite_Detection_PostProcess diff --git a/src/armnnTfLiteParser/TfLiteParser.cpp b/src/armnnTfLiteParser/TfLiteParser.cpp index c00c2188a9..5c5618b865 100644 --- a/src/armnnTfLiteParser/TfLiteParser.cpp +++ b/src/armnnTfLiteParser/TfLiteParser.cpp @@ -465,6 +465,7 @@ TfLiteParser::TfLiteParser() m_ParserFunctions[tflite::BuiltinOperator_MEAN] = &TfLiteParser::ParseMean; m_ParserFunctions[tflite::BuiltinOperator_PAD] = &TfLiteParser::ParsePad; m_ParserFunctions[tflite::BuiltinOperator_SPLIT] = &TfLiteParser::ParseSplit; + m_ParserFunctions[tflite::BuiltinOperator_TANH] = &TfLiteParser::ParseTanH; } void TfLiteParser::ResetParser() @@ -1478,6 +1479,11 @@ void TfLiteParser::ParseLogistic(size_t subgraphIndex, size_t operatorIndex) ParseActivation(subgraphIndex,operatorIndex,ActivationFunction::Sigmoid); } +void TfLiteParser::ParseTanH(size_t subgraphIndex, size_t operatorIndex) +{ + ParseActivation(subgraphIndex,operatorIndex,ActivationFunction::TanH); +} + void TfLiteParser::ParseActivation(size_t subgraphIndex, size_t operatorIndex, ActivationFunction activationType) { @@ -1514,6 +1520,13 @@ void TfLiteParser::ParseActivation(size_t subgraphIndex, size_t operatorIndex, A layerName += str(boost::format("SIGMOID:%1%:%2%") % subgraphIndex % operatorIndex); break; } + case ActivationFunction::TanH: + { + layerName += str(boost::format("TANH:%1%:%2%") % subgraphIndex % operatorIndex); + activationDesc.m_A = 1.0f; + activationDesc.m_B = 1.0f; + break; + } default: { throw ParseException( diff --git a/src/armnnTfLiteParser/TfLiteParser.hpp b/src/armnnTfLiteParser/TfLiteParser.hpp index e166dd5d8c..a3ef22fa7e 100644 --- a/src/armnnTfLiteParser/TfLiteParser.hpp +++ b/src/armnnTfLiteParser/TfLiteParser.hpp @@ -117,6 +117,7 @@ private: void ParsePad(size_t subgraphIndex, size_t operatorIndex); void ParsePool(size_t subgraphIndex, size_t operatorIndex, armnn::PoolingAlgorithm algorithm); void ParseSplit(size_t subgraphIndex, size_t operatorIndex); + void ParseTanH(size_t subgraphIndex, size_t operatorIndex); void RegisterProducerOfTensor(size_t subgraphIndex, size_t tensorIndex, armnn::IOutputSlot* slot); void RegisterConsumerOfTensor(size_t subgraphIndex, size_t tensorIndex, armnn::IInputSlot* slot); diff --git a/src/armnnTfLiteParser/test/Activations.cpp b/src/armnnTfLiteParser/test/Activations.cpp index dac16ce2c6..e8153a28cb 100644 --- a/src/armnnTfLiteParser/test/Activations.cpp +++ b/src/armnnTfLiteParser/test/Activations.cpp @@ -93,4 +93,16 @@ BOOST_FIXTURE_TEST_CASE(ParseLogistic, SigmoidFixture) RunTest<2, armnn::DataType::Float32>(0, { -1.0f, -0.5f, 4.0f, -4.0f, 0.0f, 0.5f, -0.75f }, {0.268941f, 0.377541f, 0.982013f, 0.0179862f, 0.5f, 0.622459f, 0.320821f }); } + +struct TanHFixture : ActivationFixture +{ + TanHFixture() : ActivationFixture("TANH", "FLOAT32") {} +}; + +BOOST_FIXTURE_TEST_CASE(ParseTanH, TanHFixture) +{ + RunTest<2, armnn::DataType::Float32>(0, + { -0.1f, -0.2f, -0.3f, -0.4f, 0.1f, 0.2f, 0.3f }, + { -0.09966799f, -0.19737528f, -0.29131261f, -0.379949f, 0.09966799f, 0.19737528f, 0.29131261f }); +} BOOST_AUTO_TEST_SUITE_END() |