xref: /aosp_15_r20/external/armnn/src/armnnTfLiteParser/test/BatchToSpaceND.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "ParserFlatbuffersFixture.hpp"
7 
8 
9 TEST_SUITE("TensorflowLiteParser_BatchToSpaceND")
10 {
11 struct BatchToSpaceNDFixture : public ParserFlatbuffersFixture
12 {
BatchToSpaceNDFixtureBatchToSpaceNDFixture13     explicit BatchToSpaceNDFixture(const std::string & inputShape,
14                                    const std::string & outputShape,
15                                    const std::string & blockShapeData,
16                                    const std::string & cropsData)
17     {
18         m_JsonString = R"(
19             {
20                 "version": 3,
21                 "operator_codes": [ { "builtin_code": "BATCH_TO_SPACE_ND" } ],
22                 "subgraphs": [ {
23                     "tensors": [
24                         {
25                             "shape": )" + inputShape + R"(,
26                             "type": "FLOAT32",
27                             "buffer": 0,
28                             "name": "inputTensor",
29                             "quantization": {
30                                 "min": [ 0.0 ],
31                                 "max": [ 255.0 ],
32                                 "scale": [ 1.0 ],
33                                 "zero_point": [ 0 ],
34                             }
35                         },
36                         {
37                              "shape": )" + outputShape + R"(,
38                              "type": "FLOAT32",
39                              "buffer": 1,
40                              "name": "outputTensor",
41                              "quantization": {
42                                 "min": [ 0.0 ],
43                                 "max": [ 255.0 ],
44                                 "scale": [ 1.0 ],
45                                 "zero_point": [ 0 ],
46                             }
47                         },
48                         {
49                              "shape": [ 2 ],
50                              "type": "INT32",
51                              "buffer": 2,
52                              "name": "blockShapeTensor",
53                              "quantization": {
54                                 "min": [ 0.0 ],
55                                 "max": [ 255.0 ],
56                                 "scale": [ 1.0 ],
57                                 "zero_point": [ 0 ],
58                              }
59                         },
60                         {
61                              "shape": [ 2, 2 ],
62                              "type": "INT32",
63                              "buffer": 3,
64                              "name": "cropsTensor",
65                              "quantization": {
66                                 "min": [ 0.0 ],
67                                 "max": [ 255.0 ],
68                                 "scale": [ 1.0 ],
69                                 "zero_point": [ 0 ],
70                              }
71                         }
72                     ],
73                     "inputs": [ 0 ],
74                     "outputs": [ 1 ],
75                     "operators": [
76                         {
77                             "opcode_index": 0,
78                             "inputs": [ 0, 2, 3 ],
79                             "outputs": [ 1 ],
80                             "custom_options_format": "FLEXBUFFERS"
81                         }
82                     ],
83                 } ],
84                 "buffers" : [
85                     { },
86                     { },
87                     { "data": )" + blockShapeData + R"(, },
88                     { "data": )" + cropsData + R"(, },
89                 ]
90             }
91         )";
92       Setup();
93     }
94 };
95 
96 struct BatchToSpaceNDFixtureTest1 : public BatchToSpaceNDFixture
97 {
BatchToSpaceNDFixtureTest1BatchToSpaceNDFixtureTest198     BatchToSpaceNDFixtureTest1() : BatchToSpaceNDFixture("[ 4, 2, 2, 1 ]",
99                                                          "[ 1, 4, 4, 1 ]",
100                                                          "[ 2,0,0,0, 2,0,0,0 ]",
101                                                          "[ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]") {}
102 };
103 
104 TEST_CASE_FIXTURE(BatchToSpaceNDFixtureTest1, "BatchToSpaceNDTest1")
105 {
106     RunTest<4, armnn::DataType::Float32>
107         (0,
108          {{ "inputTensor",  { // Batch 0, Height 0, Width (2) x Channel (1)
109                               1.0f, 3.0f,
110                               // Batch 0, Height 1, Width (2) x Channel (1)
111                               9.0f, 11.0f,
112 
113                               // Batch 1, Height 0, Width (2) x Channel (1)
114                               2.0f, 4.0f,
115                               // Batch 1, Height 1, Width (2) x Channel (1)
116                               10.0f, 12.0f,
117 
118                               // Batch 2, Height 0, Width (2) x Channel (1)
119                               5.0f, 7.0f,
120                               // Batch 2, Height 1, Width (2) x Channel (1)
121                               13.0f, 15.0f,
122 
123                               // Batch 3, Height 0, Width (2) x Channel (3)
124                               6.0f, 8.0f,
125                               // Batch 3, Height 1, Width (2) x Channel (1)
126                               14.0f, 16.0f }}},
127          {{ "outputTensor", { 1.0f,   2.0f,  3.0f,  4.0f,
128                               5.0f,   6.0f,  7.0f,  8.0f,
129                               9.0f,  10.0f, 11.0f,  12.0f,
130                               13.0f, 14.0f, 15.0f,  16.0f }}});
131 }
132 
133 struct BatchToSpaceNDFixtureTest2 : public BatchToSpaceNDFixture
134 {
BatchToSpaceNDFixtureTest2BatchToSpaceNDFixtureTest2135     BatchToSpaceNDFixtureTest2() : BatchToSpaceNDFixture("[ 4, 1, 1, 1 ]",
136                                                          "[ 1, 2, 2, 1 ]",
137                                                          "[ 2,0,0,0, 2,0,0,0 ]",
138                                                          "[ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]") {}
139 };
140 
141 TEST_CASE_FIXTURE(BatchToSpaceNDFixtureTest2, "ParseBatchToSpaceNDTest2")
142 {
143     RunTest<4, armnn::DataType::Float32>
144         (0,
145          {{ "inputTensor",  { 1.0f, 2.0f, 3.0f, 4.0f }}},
146          {{ "outputTensor", { // Batch 0, Height 0, Width (2) x Channel (1)
147                               1.0f, 2.0f, 3.0f, 4.0f }}});
148 }
149 
150 struct BatchToSpaceNDFixtureTest3 : public BatchToSpaceNDFixture
151 {
BatchToSpaceNDFixtureTest3BatchToSpaceNDFixtureTest3152     BatchToSpaceNDFixtureTest3() : BatchToSpaceNDFixture("[ 4, 1, 1, 3 ]",
153                                                          "[ 1, 2, 2, 3 ]",
154                                                          "[ 2,0,0,0, 2,0,0,0 ]",
155                                                          "[ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]") {}
156 };
157 
158 TEST_CASE_FIXTURE(BatchToSpaceNDFixtureTest3, "ParseBatchToSpaceNDTest3")
159 {
160     RunTest<4, armnn::DataType::Float32>
161         (0,
162          {{ "inputTensor",  { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f }}},
163          {{ "outputTensor", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f }}});
164 }
165 
166 }
167