blob: b8a7154a1e015c9ab9a5dc49ea5571be1f16a578 [file] [log] [blame]
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -02001//
Finn Williamsb49ed182021-06-29 15:50:08 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -02003// SPDX-License-Identifier: MIT
4//
5
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -02006#include "ParserFlatbuffersFixture.hpp"
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -02007
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -02008
Sadik Armagan1625efc2021-06-10 18:24:34 +01009TEST_SUITE("TensorflowLiteParser_Minimum")
10{
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -020011struct MinimumFixture : public ParserFlatbuffersFixture
12{
13 explicit MinimumFixture(const std::string & inputShape1,
14 const std::string & inputShape2,
15 const std::string & outputShape)
16 {
17 m_JsonString = R"(
18 {
19 "version": 3,
20 "operator_codes": [ { "builtin_code": "MINIMUM" } ],
21 "subgraphs": [ {
22 "tensors": [
23 {
24 "shape": )" + inputShape1 + R"(,
25 "type": "FLOAT32",
26 "buffer": 0,
27 "name": "inputTensor1",
28 "quantization": {
29 "min": [ 0.0 ],
30 "max": [ 255.0 ],
31 "scale": [ 1.0 ],
32 "zero_point": [ 0 ],
33 }
34 },
35 {
36 "shape": )" + inputShape2 + R"(,
37 "type": "FLOAT32",
38 "buffer": 1,
39 "name": "inputTensor2",
40 "quantization": {
41 "min": [ 0.0 ],
42 "max": [ 255.0 ],
43 "scale": [ 1.0 ],
44 "zero_point": [ 0 ],
45 }
46 },
47 {
48 "shape": )" + outputShape + R"( ,
49 "type": "FLOAT32",
50 "buffer": 2,
51 "name": "outputTensor",
52 "quantization": {
53 "min": [ 0.0 ],
54 "max": [ 255.0 ],
55 "scale": [ 1.0 ],
56 "zero_point": [ 0 ],
57 }
58 }
59 ],
60 "inputs": [ 0, 1 ],
61 "outputs": [ 2 ],
62 "operators": [
63 {
64 "opcode_index": 0,
65 "inputs": [ 0, 1 ],
66 "outputs": [ 2 ],
67 "custom_options_format": "FLEXBUFFERS"
68 }
69 ],
70 } ],
71 "buffers" : [
72 { },
73 { }
74 ]
75 }
76 )";
77 Setup();
78 }
79};
80
81
82struct MinimumFixture4D : MinimumFixture
83{
84 MinimumFixture4D() : MinimumFixture("[ 1, 2, 2, 3 ]",
85 "[ 1, 2, 2, 3 ]",
86 "[ 1, 2, 2, 3 ]") {}
87};
88
Sadik Armagan1625efc2021-06-10 18:24:34 +010089TEST_CASE_FIXTURE(MinimumFixture4D, "ParseMinimum4D")
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -020090{
91 RunTest<4, armnn::DataType::Float32>(
92 0,
93 {{"inputTensor1", { 0.0f, 1.0f, 2.0f,
94 3.0f, 4.0f, 5.0f,
95 6.0f, 7.0f, 8.0f,
96 9.0f, 10.0f, 11.0f }},
97 {"inputTensor2", { 0.0f, 0.0f, 0.0f,
98 5.0f, 5.0f, 5.0f,
99 7.0f, 7.0f, 7.0f,
100 9.0f, 9.0f, 9.0f }}},
101 {{"outputTensor", { 0.0f, 0.0f, 0.0f,
102 3.0f, 4.0f, 5.0f,
103 6.0f, 7.0f, 7.0f,
104 9.0f, 9.0f, 9.0f }}});
105}
106
107struct MinimumBroadcastFixture4D : MinimumFixture
108{
109 MinimumBroadcastFixture4D() : MinimumFixture("[ 1, 1, 2, 1 ]",
110 "[ 1, 2, 1, 3 ]",
111 "[ 1, 2, 2, 3 ]") {}
112};
113
Sadik Armagan1625efc2021-06-10 18:24:34 +0100114TEST_CASE_FIXTURE(MinimumBroadcastFixture4D, "ParseMinimumBroadcast4D")
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -0200115{
116 RunTest<4, armnn::DataType::Float32>(
117 0,
118 {{"inputTensor1", { 2.0f,
119 4.0f }},
120 {"inputTensor2", { 1.0f, 2.0f, 3.0f,
121 4.0f, 5.0f, 6.0f }}},
122 {{"outputTensor", { 1.0f, 2.0f, 2.0f,
123 1.0f, 2.0f, 3.0f,
124 2.0f, 2.0f, 2.0f,
125 4.0f, 4.0f, 4.0f }}});
126}
127
128struct MinimumBroadcastFixture4D1D : MinimumFixture
129{
130 MinimumBroadcastFixture4D1D() : MinimumFixture("[ 1, 2, 2, 3 ]",
131 "[ 1 ]",
132 "[ 1, 2, 2, 3 ]") {}
133};
134
Sadik Armagan1625efc2021-06-10 18:24:34 +0100135TEST_CASE_FIXTURE(MinimumBroadcastFixture4D1D, "ParseMinimumBroadcast4D1D")
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -0200136{
137 RunTest<4, armnn::DataType::Float32>(
138 0,
139 {{"inputTensor1", { 0.0f, 1.0f, 2.0f,
140 3.0f, 4.0f, 5.0f,
141 6.0f, 7.0f, 8.0f,
142 9.0f, 10.0f, 11.0f }},
143 {"inputTensor2", { 5.0f }}},
144 {{"outputTensor", { 0.0f, 1.0f, 2.0f,
145 3.0f, 4.0f, 5.0f,
146 5.0f, 5.0f, 5.0f,
147 5.0f, 5.0f, 5.0f }}});
148}
149
150struct MinimumBroadcastFixture1D4D : MinimumFixture
151{
152 MinimumBroadcastFixture1D4D() : MinimumFixture("[ 3 ]",
153 "[ 1, 2, 2, 3 ]",
154 "[ 1, 2, 2, 3 ]") {}
155};
156
Sadik Armagan1625efc2021-06-10 18:24:34 +0100157TEST_CASE_FIXTURE(MinimumBroadcastFixture1D4D, "ParseMinimumBroadcast1D4D")
Bruno Goncalves8f6d7a72019-02-12 22:58:18 -0200158{
159 RunTest<4, armnn::DataType::Float32>(
160 0,
161 {{"inputTensor1", { 5.0f, 6.0f, 7.0f }},
162 {"inputTensor2", { 0.0f, 1.0f, 2.0f,
163 3.0f, 4.0f, 5.0f,
164 6.0f, 7.0f, 8.0f,
165 9.0f, 10.0f, 11.0f }}},
166 {{"outputTensor", { 0.0f, 1.0f, 2.0f,
167 3.0f, 4.0f, 5.0f,
168 5.0f, 6.0f, 7.0f,
169 5.0f, 6.0f, 7.0f }}});
170}
171
Narumol Prangnawarat4818d462019-04-17 11:22:38 +0100172struct MinimumBroadcastFixture2D0D : public ParserFlatbuffersFixture
173{
174 explicit MinimumBroadcastFixture2D0D()
175 {
176 m_JsonString = R"(
177 {
178 "version": 3,
179 "operator_codes": [ { "builtin_code": "MINIMUM" } ],
180 "subgraphs": [ {
181 "tensors": [
182 {
183 "shape": [ 1, 2 ],
184 "type": "FLOAT32",
185 "buffer": 0,
186 "name": "input0",
187 "quantization": {
188 "min": [ 0.0 ],
189 "max": [ 255.0 ],
190 "scale": [ 1.0 ],
191 "zero_point": [ 0 ],
192 }
193 },
194 {
195 "shape": [ ],
196 "type": "FLOAT32",
197 "buffer": 2,
198 "name": "input1",
199 "quantization": {
200 "min": [ 0.0 ],
201 "max": [ 255.0 ],
202 "scale": [ 1.0 ],
203 "zero_point": [ 0 ],
204 }
205 },
206 {
207 "shape": [ 1, 2 ] ,
208 "type": "FLOAT32",
209 "buffer": 1,
210 "name": "output",
211 "quantization": {
212 "min": [ 0.0 ],
213 "max": [ 255.0 ],
214 "scale": [ 1.0 ],
215 "zero_point": [ 0 ],
216 }
217 }
218 ],
219 "inputs": [ 0 ],
220 "outputs": [ 2 ],
221 "operators": [
222 {
223 "opcode_index": 0,
224 "inputs": [ 0, 1 ],
225 "outputs": [ 2 ],
226 "custom_options_format": "FLEXBUFFERS"
227 }
228 ],
229 } ],
230 "buffers" : [
231 { },
232 { },
233 { "data": [ 0, 0, 0, 64 ] }
234 ]
235 }
236 )";
237 Setup();
238 }
239};
240
Sadik Armagan1625efc2021-06-10 18:24:34 +0100241TEST_CASE_FIXTURE(MinimumBroadcastFixture2D0D, "ParseMinimumBroadcast2D0D")
Narumol Prangnawarat4818d462019-04-17 11:22:38 +0100242{
243 RunTest<2, armnn::DataType::Float32>(
244 0,
245 {{"input0", { 1.0f, 5.0f }}},
246 {{"output", { 1.0f, 2.0f }}});
247}
248
Sadik Armagan1625efc2021-06-10 18:24:34 +0100249}