• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <boost/test/unit_test.hpp>
7 #include "armnnTfParser/ITfParser.hpp"
8 #include "ParserPrototxtFixture.hpp"
9 
10 BOOST_AUTO_TEST_SUITE(TensorflowParser)
11 
12 struct ActivationFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser>
13 {
ActivationFixtureActivationFixture14     explicit ActivationFixture(const char* activationFunction)
15     {
16         m_Prototext = "node {\n"
17             "  name: \"Placeholder\"\n"
18             "  op: \"Placeholder\"\n"
19             "  attr {\n"
20             "    key: \"dtype\"\n"
21             "    value {\n"
22             "      type: DT_FLOAT\n"
23             "    }\n"
24             "  }\n"
25             "  attr {\n"
26             "    key: \"shape\"\n"
27             "    value {\n"
28             "      shape {\n"
29             "        unknown_rank: true\n"
30             "      }\n"
31             "    }\n"
32             "  }\n"
33             "}\n"
34             "node {\n"
35             "  name: \"";
36         m_Prototext.append(activationFunction);
37         m_Prototext.append("\"\n"
38                                "  op: \"");
39         m_Prototext.append(activationFunction);
40         m_Prototext.append("\"\n"
41                                "  input: \"Placeholder\"\n"
42                                "  attr {\n"
43                                "    key: \"T\"\n"
44                                "    value {\n"
45                                "      type: DT_FLOAT\n"
46                                "    }\n"
47                                "  }\n"
48                                "}\n");
49 
50         SetupSingleInputSingleOutput({ 1, 7 }, "Placeholder", activationFunction);
51     }
52 };
53 
54 
55 struct ReLuFixture : ActivationFixture
56 {
ReLuFixtureReLuFixture57     ReLuFixture() : ActivationFixture("Relu") {}
58 };
BOOST_FIXTURE_TEST_CASE(ParseReLu,ReLuFixture)59 BOOST_FIXTURE_TEST_CASE(ParseReLu, ReLuFixture)
60 {
61     RunTest<2>({ -1.0f, -0.5f, 1.25f, -3.0f, 0.0f, 0.5f, -0.75f },
62                { 0.0f, 0.0f, 1.25f, 0.0f, 0.0f, 0.5f, 0.0f });
63 }
64 
65 
66 struct ReLu6Fixture : ActivationFixture
67 {
ReLu6FixtureReLu6Fixture68     ReLu6Fixture() : ActivationFixture("Relu6") {}
69 };
BOOST_FIXTURE_TEST_CASE(ParseReLu6,ReLu6Fixture)70 BOOST_FIXTURE_TEST_CASE(ParseReLu6, ReLu6Fixture)
71 {
72     RunTest<2>({ -1.0f, -0.5f, 7.25f, -3.0f, 0.0f, 0.5f, -0.75f },
73                { 0.0f, 0.0f, 6.0f, 0.0f, 0.0f, 0.5f, 0.0f });
74 }
75 
76 
77 struct SigmoidFixture : ActivationFixture
78 {
SigmoidFixtureSigmoidFixture79     SigmoidFixture() : ActivationFixture("Sigmoid") {}
80 };
BOOST_FIXTURE_TEST_CASE(ParseSigmoid,SigmoidFixture)81 BOOST_FIXTURE_TEST_CASE(ParseSigmoid, SigmoidFixture)
82 {
83     RunTest<2>({ -0.1f, -0.2f, -0.3f, -0.4f, 0.1f, 0.2f, 0.3f },
84                { 0.4750208f, 0.45016602f, 0.42555749f, 0.40131235f, 0.52497917f, 0.54983395f, 0.57444251f });
85 }
86 
87 
88 struct SoftplusFixture : ActivationFixture
89 {
SoftplusFixtureSoftplusFixture90     SoftplusFixture() : ActivationFixture("Softplus") {}
91 };
BOOST_FIXTURE_TEST_CASE(ParseSoftplus,SoftplusFixture)92 BOOST_FIXTURE_TEST_CASE(ParseSoftplus, SoftplusFixture)
93 {
94     RunTest<2>({ -0.1f, -0.2f, -0.3f, -0.4f, 0.1f, 0.2f, 0.3f },
95                { 0.64439666f, 0.59813893f, 0.55435526f, 0.51301527f, 0.74439669f, 0.7981388f, 0.85435522f });
96 }
97 
98 
99 struct TanhFixture : ActivationFixture
100 {
TanhFixtureTanhFixture101     TanhFixture() : ActivationFixture("Tanh") {}
102 };
BOOST_FIXTURE_TEST_CASE(ParseTanh,TanhFixture)103 BOOST_FIXTURE_TEST_CASE(ParseTanh, TanhFixture)
104 {
105     RunTest<2>({ -0.1f, -0.2f, -0.3f, -0.4f, 0.1f, 0.2f, 0.3f },
106                { -0.09966799f, -0.19737528f, -0.29131261f, -0.379949f, 0.09966799f, 0.19737528f, 0.29131261f });
107 }
108 
109 BOOST_AUTO_TEST_SUITE_END()
110