ArmNN
 22.08
Prelu.cpp File Reference
#include <doctest/doctest.h>
#include "ParserFlatbuffersFixture.hpp"

Go to the source code of this file.

Functions

 TEST_SUITE ("TensorflowLiteParser_Prelu")
 

Function Documentation

◆ TEST_SUITE()

TEST_SUITE ( "TensorflowLiteParser_Prelu"  )

Definition at line 10 of file Prelu.cpp.

References ParserFlatbuffersFixture::Setup(), and TEST_CASE_FIXTURE().

11 {
12 struct 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 
104 struct 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 
319 struct SimplePreluFixture : PreluFixture
320 {
321  SimplePreluFixture() : PreluFixture("[ 2, 3 ]",
322  "[ 1 ]",
323  "[ 2, 3 ]",
324  "[ 0, 1 ]",
325  "") {}
326 };
327 
328 struct PreluConstAlphaFixture : PreluFixture
329 {
330  PreluConstAlphaFixture() : PreluFixture(
331  "[ 1, 2, 3 ]",
332  "[ 1, 2, 3 ]",
333  "[ 1, 2, 3 ]",
334  "[ 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 
338 struct 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 
348 struct PreluDynamicTensorFixture : PreluFixture
349 {
350  PreluDynamicTensorFixture() : PreluFixture("[ 2, 3 ]",
351  "[ 1, 1 ]",
352  "[]",
353  "[ 0 ]",
354  "\"data\": [ 0, 0, 128, 62 ]") {}
355 };
356 
357 TEST_CASE_FIXTURE(SimplePreluFixture, "SimplePrelu")
358 {
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 
365 TEST_CASE_FIXTURE(PreluConstAlphaFixture, "PreluConstAlpha")
366 {
367  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 
373 TEST_CASE_FIXTURE(PreluBroadcastAlphaFixture, "PreluBroadcastAlpha")
374 {
375  RunTest<4, armnn::DataType::Float32>(
376  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 
381 TEST_CASE_FIXTURE(PreluDynamicTensorFixture, "PreluDynamicTensor")
382 {
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 
390 TEST_CASE_FIXTURE(PreluNetworkFixture, "PreluNetwork")
391 {
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 
398 }
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
void Setup(bool testDynamic=true)