• 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 "ParserFlatbuffersFixture.hpp"
8 #include "../TfLiteParser.hpp"
9 
10 #include <string>
11 #include <iostream>
12 
13 BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
14 
15 struct SpaceToBatchNDFixture : public ParserFlatbuffersFixture
16 {
SpaceToBatchNDFixtureSpaceToBatchNDFixture17     explicit SpaceToBatchNDFixture(const std::string & inputShape,
18                                    const std::string & outputShape,
19                                    const std::string & blockShapeData,
20                                    const std::string & padListData)
21     {
22         m_JsonString = R"(
23             {
24                 "version": 3,
25                 "operator_codes": [ { "builtin_code": "SPACE_TO_BATCH_ND" } ],
26                 "subgraphs": [ {
27                     "tensors": [
28                         {
29                             "shape": )" + inputShape + R"(,
30                             "type": "FLOAT32",
31                             "buffer": 0,
32                             "name": "inputTensor",
33                             "quantization": {
34                                 "min": [ 0.0 ],
35                                 "max": [ 255.0 ],
36                                 "scale": [ 1.0 ],
37                                 "zero_point": [ 0 ],
38                             }
39                         },
40                         {
41                              "shape": )" + outputShape + R"(,
42                              "type": "FLOAT32",
43                              "buffer": 1,
44                              "name": "outputTensor",
45                              "quantization": {
46                                 "min": [ 0.0 ],
47                                 "max": [ 255.0 ],
48                                 "scale": [ 1.0 ],
49                                 "zero_point": [ 0 ],
50                             }
51                         },
52                         {
53                              "shape": [ 2 ],
54                              "type": "INT32",
55                              "buffer": 2,
56                              "name": "blockShapeTensor",
57                              "quantization": {
58                                 "min": [ 0.0 ],
59                                 "max": [ 255.0 ],
60                                 "scale": [ 1.0 ],
61                                 "zero_point": [ 0 ],
62                              }
63                         },
64                         {
65                              "shape": [ 2, 2 ],
66                              "type": "INT32",
67                              "buffer": 3,
68                              "name": "padListTensor",
69                              "quantization": {
70                                 "min": [ 0.0 ],
71                                 "max": [ 255.0 ],
72                                 "scale": [ 1.0 ],
73                                 "zero_point": [ 0 ],
74                              }
75                         }
76                     ],
77                     "inputs": [ 0 ],
78                     "outputs": [ 1 ],
79                     "operators": [
80                         {
81                             "opcode_index": 0,
82                             "inputs": [ 0, 2, 3 ],
83                             "outputs": [ 1 ],
84                             "custom_options_format": "FLEXBUFFERS"
85                         }
86                     ],
87                 } ],
88                 "buffers" : [
89                     { },
90                     { },
91                     { "data": )" + blockShapeData + R"(, },
92                     { "data": )" + padListData + R"(, },
93                 ]
94             }
95         )";
96       Setup();
97     }
98 };
99 
100 struct SpaceToBatchNDFixtureSimpleTest : public SpaceToBatchNDFixture
101 {
SpaceToBatchNDFixtureSimpleTestSpaceToBatchNDFixtureSimpleTest102     SpaceToBatchNDFixtureSimpleTest() : SpaceToBatchNDFixture("[ 1, 4, 4, 1 ]",
103                                                               "[ 4, 2, 2, 1 ]",
104                                                               "[ 2,0,0,0, 2,0,0,0 ]",
105                                                               "[ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]") {}
106 };
107 
BOOST_FIXTURE_TEST_CASE(SpaceToBatchNdSimpleTest,SpaceToBatchNDFixtureSimpleTest)108 BOOST_FIXTURE_TEST_CASE(SpaceToBatchNdSimpleTest, SpaceToBatchNDFixtureSimpleTest)
109 {
110     RunTest<4, armnn::DataType::Float32>
111         (0,
112          {{ "inputTensor",  { 1.0f,  2.0f,  3.0f,  4.0f,
113                               5.0f,  6.0f,  7.0f,  8.0f,
114                               9.0f, 10.0f, 11.0f, 12.0f,
115                              13.0f, 14.0f, 15.0f, 16.0f }}},
116          {{ "outputTensor", { 1.0f, 3.0f,  9.0f, 11.0f,
117                               2.0f, 4.0f, 10.0f, 12.0f,
118                               5.0f, 7.0f, 13.0f, 15.0f,
119                               6.0f, 8.0f, 14.0f, 16.0f }}});
120 }
121 
122 
123 struct SpaceToBatchNDFixtureMultipleInputBatchesTest : public SpaceToBatchNDFixture
124 {
SpaceToBatchNDFixtureMultipleInputBatchesTestSpaceToBatchNDFixtureMultipleInputBatchesTest125     SpaceToBatchNDFixtureMultipleInputBatchesTest() : SpaceToBatchNDFixture("[ 2, 2, 4, 1 ]",
126                                                                             "[ 8, 1, 2, 1 ]",
127                                                                             "[ 2,0,0,0, 2,0,0,0 ]",
128                                                                             "[ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]") {}
129 };
130 
BOOST_FIXTURE_TEST_CASE(SpaceToBatchNdMultipleInputBatchesTest,SpaceToBatchNDFixtureMultipleInputBatchesTest)131 BOOST_FIXTURE_TEST_CASE(SpaceToBatchNdMultipleInputBatchesTest, SpaceToBatchNDFixtureMultipleInputBatchesTest)
132 {
133     RunTest<4, armnn::DataType::Float32>
134         (0,
135          {{ "inputTensor",  { 1.0f,  2.0f,  3.0f,  4.0f,
136                               5.0f,  6.0f,  7.0f,  8.0f,
137                               9.0f, 10.0f, 11.0f, 12.0f,
138                              13.0f, 14.0f, 15.0f, 16.0f }}},
139          {{ "outputTensor", {  1.0f, 3.0f,  9.0f, 11.0f,
140                                2.0f, 4.0f, 10.0f, 12.0f,
141                                5.0f, 7.0f, 13.0f, 15.0f,
142                                6.0f, 8.0f, 14.0f, 16.0f }}});
143 }
144 
145 struct SpaceToBatchNDFixturePaddingTest : public SpaceToBatchNDFixture
146 {
SpaceToBatchNDFixturePaddingTestSpaceToBatchNDFixturePaddingTest147     SpaceToBatchNDFixturePaddingTest() : SpaceToBatchNDFixture("[ 1, 5, 2, 1 ]",
148                                                                "[ 6, 2, 2, 1 ]",
149                                                                "[ 3,0,0,0, 2,0,0,0 ]",
150                                                                "[ 1,0,0,0, 0,0,0,0, 2,0,0,0, 0,0,0,0 ]") {}
151 };
152 
BOOST_FIXTURE_TEST_CASE(SpaceToBatchNdPaddingTest,SpaceToBatchNDFixturePaddingTest)153 BOOST_FIXTURE_TEST_CASE(SpaceToBatchNdPaddingTest, SpaceToBatchNDFixturePaddingTest)
154 {
155     RunTest<4, armnn::DataType::Float32>
156         (0,
157          {{ "inputTensor",  {  1.0f,  2.0f,  3.0f,  4.0f, 5.0f,
158                                6.0f,  7.0f,  8.0f,  9.0f, 10.0f }}},
159          {{ "outputTensor", {  0.0f, 0.0f,
160                                0.0f, 5.0f,
161 
162                                0.0f, 0.0f,
163                                0.0f, 6.0f,
164 
165                                0.0f, 1.0f,
166                                0.0f, 7.0f,
167 
168                                0.0f, 2.0f,
169                                0.0f, 8.0f,
170 
171                                0.0f, 3.0f,
172                                0.0f, 9.0f,
173 
174                                0.0f, 4.0f,
175                                0.0f, 10.0f, }}});
176 }
177 
178 BOOST_AUTO_TEST_SUITE_END()
179