blob: bfe2c6a4fd2baf694d15c8af1aa23447f84414f3 [file] [log] [blame]
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +01001//
Finn Williamsb49ed182021-06-29 15:50:08 +01002// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +01003// SPDX-License-Identifier: MIT
4//
5
Sadik Armagan1625efc2021-06-10 18:24:34 +01006#include <doctest/doctest.h>
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +01007#include "ParserFlatbuffersFixture.hpp"
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +01008
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +01009
Sadik Armagan1625efc2021-06-10 18:24:34 +010010TEST_SUITE("TensorflowLiteParser_Prelu")
11{
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +010012struct PreluFixture : public ParserFlatbuffersFixture
13{
14 explicit PreluFixture(const std::string& inputShape,
15 const std::string& alphaShape,
16 const std::string& outputShape,
17 const std::string& inputIndex,
18 const std::string& alphaData)
19 {
20 m_JsonString = R"(
21 {
22 "version": 3,
23 "operator_codes": [
24 {
25 "builtin_code": "PRELU",
26 "version": 1
27 }
28 ],
29 "subgraphs": [
30 {
31 "tensors": [
32 {
33 "shape": )" + inputShape + R"(,
34 "type": "FLOAT32",
35 "buffer": 1,
36 "name": "input0",
37 "quantization": {
38 "details_type": "NONE",
39 "quantized_dimension": 0
40 },
41 "is_variable": false
42 },
43 {
44 "shape": )" + alphaShape + R"(,
45 "type": "FLOAT32",
46 "buffer": 2,
47 "name": "input1",
48 "quantization": {
49 "details_type": "NONE",
50 "quantized_dimension": 0
51 },
52 "is_variable": false
53 },
54 {
55 "shape": )" + outputShape + R"(,
56 "type": "FLOAT32",
57 "buffer": 3,
58 "name": "output",
59 "quantization": {
60 "details_type": "NONE",
61 "quantized_dimension": 0
62 },
63 "is_variable": false
64 }
65 ],
66 "inputs": )" + inputIndex + R"(,
67 "outputs": [
68 2
69 ],
70 "operators": [
71 {
72 "opcode_index": 0,
73 "inputs": [
74 0,
75 1
76 ],
77 "outputs": [
78 2
79 ],
80 "builtin_options_type": "NONE",
81 "custom_options_format": "FLEXBUFFERS"
82 }
83 ],
84 "name": "main"
85 }
86 ],
87 "description": "MLIR Converted.",
88 "buffers": [
89 {
90 },
91 {
92 },
93 { )" + alphaData + R"(
94 },
95 {
96 }
97 ]
98 }
99 )";
100 Setup();
101 }
102};
103
Narumol Prangnawaratbf99b5f2021-05-27 09:55:43 +0100104struct PreluNetworkFixture : public ParserFlatbuffersFixture
105{
106 explicit PreluNetworkFixture()
107 {
108 m_JsonString = R"(
109 {
110 "version": 3,
111 "operator_codes": [
112 {
113 "builtin_code": "PRELU",
114 "version": 1
115 },
116 {
117 "builtin_code": "MUL",
118 "version": 1
119 },
120 {
121 "builtin_code": "ADD",
122 "version": 1
123 }
124 ],
125 "subgraphs": [
126 {
127 "tensors": [
128 {
129 "shape": [
130 1,
131 2,
132 3
133 ],
134 "type": "FLOAT32",
135 "buffer": 6,
136 "name": "output",
137 "quantization": {
138 "details_type": "NONE",
139 "quantized_dimension": 0
140 },
141 },
142 {
143 "shape": [
144 1,
145 2,
146 3
147 ],
148 "type": "FLOAT32",
149 "buffer": 5,
150 "name": "mul",
151 "quantization": {
152 "details_type": "NONE",
153 "quantized_dimension": 0
154 }
155 },
156 {
157 "shape": [
158 1,
159 2,
160 3
161 ],
162 "type": "FLOAT32",
163 "buffer": 1,
164 "name": "input0",
165 "quantization": {
166 "details_type": "NONE",
167 "quantized_dimension": 0
168 }
169 },
170 {
171 "shape": [
172 2,
173 3
174 ],
175 "type": "FLOAT32",
176 "buffer": 2,
177 "name": "alpha",
178 "quantization": {
179 "details_type": "NONE",
180 "quantized_dimension": 0
181 }
182 },
183 {
184 "shape": [
185 1
186 ],
187 "type": "FLOAT32",
188 "buffer": 3,
189 "name": "const0",
190 "quantization": {
191 "details_type": "NONE",
192 "quantized_dimension": 0
193 }
194 },
195 {
196 "shape": [
197 1,
198 2,
199 3
200 ],
201 "type": "FLOAT32",
202 "buffer": 4,
203 "name": "prelumul",
204 "quantization": {
205 "details_type": "NONE",
206 "quantized_dimension": 0
207 }
208 }
209 ],
210 "inputs": [
211 2
212 ],
213 "outputs": [
214 0
215 ],
216 "operators": [
217 {
218 "opcode_index": 0,
219 "inputs": [
220 2,
221 3
222 ],
223 "outputs": [
224 5
225 ],
226 "builtin_options_type": "NONE",
227 "custom_options_format": "FLEXBUFFERS"
228 },
229 {
230 "opcode_index": 1,
231 "inputs": [
232 5,
233 4
234 ],
235 "outputs": [
236 1
237 ],
238 "builtin_options_type": "MulOptions",
239 "builtin_options": {
240 "fused_activation_function": "NONE"
241 },
242 "custom_options_format": "FLEXBUFFERS"
243 },
244 {
245 "opcode_index": 2,
246 "inputs": [
247 5,
248 1
249 ],
250 "outputs": [
251 0
252 ],
253 "builtin_options_type": "AddOptions",
254 "builtin_options": {
255 "fused_activation_function": "NONE"
256 },
257 "custom_options_format": "FLEXBUFFERS"
258 }
259 ],
260 "name": "main"
261 }
262 ],
263 "buffers": [
264 {
265 },
266 {
267 },
268 {
269 "data": [
270 0,
271 0,
272 128,
273 62,
274 0,
275 0,
276 128,
277 62,
278 0,
279 0,
280 128,
281 62,
282 0,
283 0,
284 128,
285 62,
286 0,
287 0,
288 128,
289 62,
290 0,
291 0,
292 128,
293 62
294 ]
295 },
296 {
297 "data": [
298 0,
299 0,
300 160,
301 64
302 ]
303 },
304 {
305 },
306 {
307 },
308 {
309 },
310 {
311 }
312 ],
313 }
314 )";
315 Setup();
316 }
317};
318
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100319struct SimplePreluFixture : PreluFixture
320{
321 SimplePreluFixture() : PreluFixture("[ 2, 3 ]",
Narumol Prangnawarat4a4af112021-05-25 14:26:24 +0100322 "[ 1 ]",
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100323 "[ 2, 3 ]",
324 "[ 0, 1 ]",
325 "") {}
326};
327
328struct PreluConstAlphaFixture : PreluFixture
329{
330 PreluConstAlphaFixture() : PreluFixture(
Narumol Prangnawarat4a4af112021-05-25 14:26:24 +0100331 "[ 1, 2, 3 ]",
332 "[ 1, 2, 3 ]",
333 "[ 1, 2, 3 ]",
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100334 "[ 0 ]",
335 "\"data\": [ 0, 0, 128, 62, 0, 0, 128, 62, 0, 0, 128, 62, 0, 0, 128, 62, 0, 0, 128, 62, 0, 0, 128, 62 ]"){}
336};
337
Narumol Prangnawarat4a4af112021-05-25 14:26:24 +0100338struct PreluBroadcastAlphaFixture : PreluFixture
339{
340 PreluBroadcastAlphaFixture() : PreluFixture(
341 "[ 1, 1, 2, 3 ]",
342 "[ 1, 3 ]",
343 "[ 1, 1, 2, 3 ]",
344 "[ 0 ]",
345 "\"data\": [ 0, 0, 128, 62, 0, 0, 128, 62, 0, 0, 128, 62 ]"){}
346};
347
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100348struct PreluDynamicTensorFixture : PreluFixture
349{
350 PreluDynamicTensorFixture() : PreluFixture("[ 2, 3 ]",
351 "[ 1, 1 ]",
352 "[]",
353 "[ 0 ]",
354 "\"data\": [ 0, 0, 128, 62 ]") {}
355};
356
Sadik Armagan1625efc2021-06-10 18:24:34 +0100357TEST_CASE_FIXTURE(SimplePreluFixture, "SimplePrelu")
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100358{
359 RunTest<2, armnn::DataType::Float32>(
360 0,
361 {{"input0", { -14.f, 2.f, 0.f, 1.f, -5.f, 14.f }},{"input1", { 0.25f }}},
362 {{"output", { -3.5f, 2.f, 0.f, 1.f, -1.25f, 14.f }}});
363}
364
Sadik Armagan1625efc2021-06-10 18:24:34 +0100365TEST_CASE_FIXTURE(PreluConstAlphaFixture, "PreluConstAlpha")
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100366{
Narumol Prangnawarat4a4af112021-05-25 14:26:24 +0100367 RunTest<3, armnn::DataType::Float32>(
368 0,
369 {{"input0", { -14.f, 2.f, 0.f, 1.f, -5.f, 14.f }}},
370 {{"output", { -3.5f, 2.f, 0.f, 1.f, -1.25f, 14.f }}});
371}
372
Sadik Armagan1625efc2021-06-10 18:24:34 +0100373TEST_CASE_FIXTURE(PreluBroadcastAlphaFixture, "PreluBroadcastAlpha")
Narumol Prangnawarat4a4af112021-05-25 14:26:24 +0100374{
375 RunTest<4, armnn::DataType::Float32>(
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100376 0,
377 {{"input0", { -14.f, 2.f, 0.f, 1.f, -5.f, 14.f }}},
378 {{"output", { -3.5f, 2.f, 0.f, 1.f, -1.25f, 14.f }}});
379}
380
Sadik Armagan1625efc2021-06-10 18:24:34 +0100381TEST_CASE_FIXTURE(PreluDynamicTensorFixture, "PreluDynamicTensor")
Narumol Prangnawaratbfaee6b2021-05-24 18:50:24 +0100382{
383 RunTest<2, armnn::DataType::Float32, armnn::DataType::Float32>(
384 0,
385 {{"input0", { -14.f, 2.f, 0.f, 1.f, -5.f, 14.f }}},
386 {{"output", { -3.5f, 2.f, 0.f, 1.f, -1.25f, 14.f }}},
387 true);
388}
389
Sadik Armagan1625efc2021-06-10 18:24:34 +0100390TEST_CASE_FIXTURE(PreluNetworkFixture, "PreluNetwork")
Narumol Prangnawaratbf99b5f2021-05-27 09:55:43 +0100391{
392 RunTest<3, armnn::DataType::Float32>(
393 0,
394 {{"input0", { -14.f, 2.f, 0.f, 1.f, -5.f, 14.f }}},
395 {{"output", { -21.f, 12.f, 0.f, 6.f, -7.5f, 84.f }}});
396}
397
Sadik Armagan1625efc2021-06-10 18:24:34 +0100398}