diff options
author | Mike Kelly <mike.kelly@arm.com> | 2019-02-20 16:53:11 +0000 |
---|---|---|
committer | Mike Kelly <mike.kelly@arm.com> | 2019-02-20 16:53:11 +0000 |
commit | af484013329a8ca5b3c4c9d16395fb79dd19b1b2 (patch) | |
tree | 90a6e08d99a3856403c79395cd4b58bad8755e4a /src/armnnDeserializer/test/DeserializeActivation.cpp | |
parent | 0028d1b0ce5f4c2c6a6eb3c66f38111c21eb47a3 (diff) | |
download | armnn-af484013329a8ca5b3c4c9d16395fb79dd19b1b2.tar.gz |
IVGCVSW-2643 Add Serializer & Deserializer for Activation
* Added ActivationLayer to Schema.fbs
* Added Activation serialization and deserialization support
* Added serialization and deserialization unit tests
Change-Id: Ib5df45f123674988b994ffe3f111d3fb57864912
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Diffstat (limited to 'src/armnnDeserializer/test/DeserializeActivation.cpp')
-rw-r--r-- | src/armnnDeserializer/test/DeserializeActivation.cpp | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/src/armnnDeserializer/test/DeserializeActivation.cpp b/src/armnnDeserializer/test/DeserializeActivation.cpp new file mode 100644 index 0000000000..ad03dd662b --- /dev/null +++ b/src/armnnDeserializer/test/DeserializeActivation.cpp @@ -0,0 +1,178 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <boost/test/unit_test.hpp> +#include "ParserFlatbuffersSerializeFixture.hpp" +#include "../Deserializer.hpp" + +#include <string> +#include <iostream> + +BOOST_AUTO_TEST_SUITE(DeserializeParser) + +struct ActivationFixture : public ParserFlatbuffersSerializeFixture +{ + explicit ActivationFixture(const std::string& inputShape, + const std::string& outputShape, + const std::string& dataType, + const std::string& activationType="Sigmoid", + const std::string& a = "0.0", + const std::string& b = "0.0") + { + m_JsonString = R"( + { + inputIds: [0], + outputIds: [2], + layers: [{ + layer_type: "InputLayer", + layer: { + base: { + layerBindingId: 0, + base: { + index: 0, + layerName: "InputLayer", + layerType: "Input", + inputSlots: [{ + index: 0, + connection: {sourceLayerIndex:0, outputSlotIndex:0 }, + }], + outputSlots: [{ + index: 0, + tensorInfo: { + dimensions: )" + inputShape + R"(, + dataType: )" + dataType + R"( + }, + }], + }, + } + }, + }, + { + layer_type: "ActivationLayer", + layer : { + base: { + index:1, + layerName: "ActivationLayer", + layerType: "Activation", + inputSlots: [{ + index: 0, + connection: {sourceLayerIndex:0, outputSlotIndex:0 }, + }], + outputSlots: [{ + index: 0, + tensorInfo: { + dimensions: )" + outputShape + R"(, + dataType: )" + dataType + R"( + }, + }], + }, + descriptor: { + a: )" + a + R"(, + b: )" + b + R"(, + function: )" + activationType + R"( + }, + }, + }, + { + layer_type: "OutputLayer", + layer: { + base:{ + layerBindingId: 2, + base: { + index: 2, + layerName: "OutputLayer", + layerType: "Output", + inputSlots: [{ + index: 0, + connection: {sourceLayerIndex:1, outputSlotIndex:0 }, + }], + outputSlots: [{ + index: 0, + tensorInfo: { + dimensions: )" + outputShape + R"(, + dataType: )" + dataType + R"( + }, + }], + } + } + }, + }] + } + )"; + Setup(); + } +}; + +struct SimpleActivationFixture : ActivationFixture +{ + SimpleActivationFixture() : ActivationFixture("[1, 2, 2, 1]", + "[1, 2, 2, 1]", + "QuantisedAsymm8", + "ReLu") {} +}; + +struct SimpleActivationFixture2 : ActivationFixture +{ + SimpleActivationFixture2() : ActivationFixture("[1, 2, 2, 1]", + "[1, 2, 2, 1]", + "Float32", + "ReLu") {} +}; + +struct SimpleActivationFixture3 : ActivationFixture +{ + SimpleActivationFixture3() : ActivationFixture("[1, 2, 2, 1]", + "[1, 2, 2, 1]", + "QuantisedAsymm8", + "BoundedReLu", + "5.0", + "0.0") {} +}; + +struct SimpleActivationFixture4 : ActivationFixture +{ + SimpleActivationFixture4() : ActivationFixture("[1, 2, 2, 1]", + "[1, 2, 2, 1]", + "Float32", + "BoundedReLu", + "5.0", + "0.0") {} +}; + + +BOOST_FIXTURE_TEST_CASE(ActivationReluQuantisedAsymm8, SimpleActivationFixture) +{ + RunTest<4, armnn::DataType::QuantisedAsymm8>( + 0, + {{"InputLayer", {10, 0, 2, 0}}}, + {{"OutputLayer", {10, 0, 2, 0}}}); +} + +BOOST_FIXTURE_TEST_CASE(ActivationReluFloat32, SimpleActivationFixture2) +{ + RunTest<4, armnn::DataType::Float32>( + 0, + {{"InputLayer", {111, -85, 226, 3}}}, + {{"OutputLayer", {111, 0, 226, 3}}}); +} + + +BOOST_FIXTURE_TEST_CASE(ActivationBoundedReluQuantisedAsymm8, SimpleActivationFixture3) +{ + RunTest<4, armnn::DataType::QuantisedAsymm8>( + 0, + {{"InputLayer", {10, 0, 2, 0}}}, + {{"OutputLayer", {5, 0, 2, 0}}}); +} + +BOOST_FIXTURE_TEST_CASE(ActivationBoundedReluFloat32, SimpleActivationFixture4) +{ + RunTest<4, armnn::DataType::Float32>( + 0, + {{"InputLayer", {111, -85, 226, 3}}}, + {{"OutputLayer", {5, 0, 5, 3}}}); +} + +BOOST_AUTO_TEST_SUITE_END() |