blob: b479eb4953504ff4315163e8a7fa5a63ea3c551d [file] [log] [blame]
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +01001/*
Michalis Spyrou80943252019-01-10 17:19:50 +00002 * Copyright (c) 2017-2019 ARM Limited.
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +01003 *
4 * SPDX-License-Identifier: MIT
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
24#ifndef __ARM_COMPUTE_TEST_SHAPE_DATASETS_H__
25#define __ARM_COMPUTE_TEST_SHAPE_DATASETS_H__
26
27#include "arm_compute/core/TensorShape.h"
Moritz Pflanzera09de0c2017-09-01 20:41:12 +010028#include "tests/framework/datasets/Datasets.h"
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010029
30#include <type_traits>
31
32namespace arm_compute
33{
34namespace test
35{
36namespace datasets
37{
Gian Marco5420b282017-11-29 10:41:38 +000038/** Parent type for all for shape datasets. */
39using ShapeDataset = framework::dataset::ContainerDataset<std::vector<TensorShape>>;
40
Michele Di Giorgio5daeffd2018-11-26 10:01:15 +000041/** Data set containing tiny 1D tensor shapes. */
42class Tiny1DShapes final : public ShapeDataset
43{
44public:
45 Tiny1DShapes()
46 : ShapeDataset("Shape",
47 {
48 TensorShape{ 2U },
49 TensorShape{ 3U },
50 })
51 {
52 }
53};
54
Gian Marco5420b282017-11-29 10:41:38 +000055/** Data set containing small 1D tensor shapes. */
56class Small1DShapes final : public ShapeDataset
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010057{
58public:
Gian Marco5420b282017-11-29 10:41:38 +000059 Small1DShapes()
60 : ShapeDataset("Shape",
61 {
Giorgio Arenae3d24ce2018-08-24 14:44:08 +010062 TensorShape{ 128U },
63 TensorShape{ 256U },
64 TensorShape{ 512U },
65 TensorShape{ 1024U }
Gian Marco5420b282017-11-29 10:41:38 +000066 })
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010067 {
68 }
69};
70
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +000071/** Data set containing tiny 2D tensor shapes. */
72class Tiny2DShapes final : public ShapeDataset
73{
74public:
75 Tiny2DShapes()
76 : ShapeDataset("Shape",
77 {
78 TensorShape{ 7U, 7U },
79 TensorShape{ 11U, 13U },
80 })
81 {
82 }
83};
Moritz Pflanzerb3d25792017-07-26 11:49:37 +010084/** Data set containing small 2D tensor shapes. */
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010085class Small2DShapes final : public ShapeDataset
86{
87public:
88 Small2DShapes()
89 : ShapeDataset("Shape",
90 {
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010091 TensorShape{ 7U, 7U },
92 TensorShape{ 27U, 13U },
93 TensorShape{ 128U, 64U }
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010094 })
95 {
96 }
97};
98
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +000099/** Data set containing tiny 3D tensor shapes. */
100class Tiny3DShapes final : public ShapeDataset
101{
102public:
103 Tiny3DShapes()
104 : ShapeDataset("Shape",
105 {
106 TensorShape{ 7U, 7U, 5U },
107 TensorShape{ 23U, 13U, 9U },
108 })
109 {
110 }
111};
112
Gian Marco Iodice06b184a2017-08-29 16:05:25 +0100113/** Data set containing small 3D tensor shapes. */
114class Small3DShapes final : public ShapeDataset
115{
116public:
117 Small3DShapes()
118 : ShapeDataset("Shape",
119 {
Georgios Pinitas02ee4292018-02-15 17:22:36 +0000120 TensorShape{ 1U, 7U, 7U },
Pablo Tello54303692018-11-22 16:14:36 +0000121 TensorShape{ 2U, 5U, 4U },
122
Georgios Pinitas02ee4292018-02-15 17:22:36 +0000123 TensorShape{ 7U, 7U, 5U },
Gian Marco Iodice06b184a2017-08-29 16:05:25 +0100124 TensorShape{ 27U, 13U, 37U },
Gian Marco Iodice06b184a2017-08-29 16:05:25 +0100125 })
126 {
127 }
128};
129
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000130/** Data set containing tiny 4D tensor shapes. */
131class Tiny4DShapes final : public ShapeDataset
132{
133public:
134 Tiny4DShapes()
135 : ShapeDataset("Shape",
136 {
137 TensorShape{ 7U, 7U, 5U, 3U },
138 TensorShape{ 17U, 13U, 7U, 2U },
139 })
140 {
141 }
142};
Gian Marco Iodice06b184a2017-08-29 16:05:25 +0100143/** Data set containing small 4D tensor shapes. */
144class Small4DShapes final : public ShapeDataset
145{
146public:
147 Small4DShapes()
148 : ShapeDataset("Shape",
149 {
Manuel Bottini1d4f3852019-01-14 15:14:43 +0000150 TensorShape{ 2U, 7U, 1U, 3U },
Georgios Pinitas02ee4292018-02-15 17:22:36 +0000151 TensorShape{ 7U, 7U, 5U, 3U },
Gian Marco Iodice06b184a2017-08-29 16:05:25 +0100152 TensorShape{ 27U, 13U, 37U, 2U },
153 TensorShape{ 128U, 64U, 21U, 3U }
154 })
155 {
156 }
157};
158
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100159/** Data set containing small tensor shapes. */
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000160class TinyShapes final : public ShapeDataset
161{
162public:
163 TinyShapes()
164 : ShapeDataset("Shape",
165 {
166 // Batch size 1
167 TensorShape{ 9U, 9U },
168 TensorShape{ 27U, 13U, 2U },
169 })
170 {
171 }
172};
173/** Data set containing small tensor shapes. */
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100174class SmallShapes final : public ShapeDataset
175{
176public:
177 SmallShapes()
178 : ShapeDataset("Shape",
179 {
SiCong Licaf8c5e2017-08-21 13:12:52 +0100180 // Batch size 1
Gian Marco Iodice215b4ea2018-06-28 16:29:29 +0100181 TensorShape{ 11U, 11U },
Georgios Pinitas64f1a902018-09-18 13:42:51 +0100182 TensorShape{ 27U, 13U, 7U },
183 TensorShape{ 31U, 27U, 17U, 2U },
SiCong Licaf8c5e2017-08-21 13:12:52 +0100184 // Batch size 4
SiCong Licaf8c5e2017-08-21 13:12:52 +0100185 TensorShape{ 27U, 13U, 2U, 4U },
SiCong Licaf8c5e2017-08-21 13:12:52 +0100186 // Arbitrary batch size
Gian Marco Iodice215b4ea2018-06-28 16:29:29 +0100187 TensorShape{ 11U, 11U, 3U, 5U }
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100188 })
189 {
190 }
191};
192
Diego Lopez Recas0021d752017-12-18 14:42:56 +0000193/** Data set containing pairs of small tensor shapes that are broadcast compatible. */
194class SmallShapesBroadcast final : public framework::dataset::ZipDataset<ShapeDataset, ShapeDataset>
195{
196public:
197 SmallShapesBroadcast()
198 : ZipDataset<ShapeDataset, ShapeDataset>(
199 ShapeDataset("Shape0",
200 {
201 TensorShape{ 9U, 9U },
202 TensorShape{ 27U, 13U, 2U },
203 TensorShape{ 128U, 1U, 5U, 3U },
204 TensorShape{ 9U, 9U, 3U, 4U },
205 TensorShape{ 27U, 13U, 2U, 4U },
Sang-Hoon Parkcecb0a72019-09-17 08:59:09 +0100206 TensorShape{ 1U, 1U, 1U, 5U },
207 TensorShape{ 1U, 16U, 10U, 2U, 128U },
208 TensorShape{ 1U, 16U, 10U, 2U, 128U }
Diego Lopez Recas0021d752017-12-18 14:42:56 +0000209 }),
210 ShapeDataset("Shape1",
211 {
212 TensorShape{ 9U, 1U, 2U },
213 TensorShape{ 1U, 13U, 2U },
214 TensorShape{ 128U, 64U, 1U, 3U },
215 TensorShape{ 9U, 1U, 3U },
216 TensorShape{ 1U },
Sang-Hoon Parkcecb0a72019-09-17 08:59:09 +0100217 TensorShape{ 9U, 9U, 3U, 5U },
218 TensorShape{ 1U, 1U, 1U, 1U, 128U },
219 TensorShape{ 128U }
Diego Lopez Recas0021d752017-12-18 14:42:56 +0000220 }))
221 {
222 }
223};
224
steniu01f81652d2017-09-11 15:29:12 +0100225/** Data set containing medium tensor shapes. */
226class MediumShapes final : public ShapeDataset
227{
228public:
229 MediumShapes()
230 : ShapeDataset("Shape",
231 {
232 // Batch size 1
233 TensorShape{ 37U, 37U },
234 TensorShape{ 27U, 33U, 2U },
steniu01f81652d2017-09-11 15:29:12 +0100235 // Arbitrary batch size
236 TensorShape{ 37U, 37U, 3U, 5U }
237 })
238 {
239 }
240};
241
Gian Marco37908d92017-11-07 14:38:22 +0000242/** Data set containing medium 2D tensor shapes. */
243class Medium2DShapes final : public ShapeDataset
244{
245public:
246 Medium2DShapes()
247 : ShapeDataset("Shape",
248 {
249 TensorShape{ 42U, 37U },
250 TensorShape{ 57U, 60U },
251 TensorShape{ 128U, 64U },
Gian Marco Iodice2abb2162018-04-11 10:49:04 +0100252 TensorShape{ 83U, 72U },
253 TensorShape{ 40U, 40U }
Gian Marco37908d92017-11-07 14:38:22 +0000254 })
255 {
256 }
257};
258
Gian Marco Iodice7e4b2392018-02-22 16:17:20 +0000259/** Data set containing medium 3D tensor shapes. */
260class Medium3DShapes final : public ShapeDataset
261{
262public:
263 Medium3DShapes()
264 : ShapeDataset("Shape",
265 {
266 TensorShape{ 42U, 37U, 8U },
267 TensorShape{ 57U, 60U, 13U },
Gian Marco Iodice7e4b2392018-02-22 16:17:20 +0000268 TensorShape{ 83U, 72U, 14U }
269 })
270 {
271 }
272};
273
274/** Data set containing medium 4D tensor shapes. */
275class Medium4DShapes final : public ShapeDataset
276{
277public:
278 Medium4DShapes()
279 : ShapeDataset("Shape",
280 {
281 TensorShape{ 42U, 37U, 8U, 15U },
282 TensorShape{ 57U, 60U, 13U, 8U },
Gian Marco Iodice7e4b2392018-02-22 16:17:20 +0000283 TensorShape{ 83U, 72U, 14U, 5U }
284 })
285 {
286 }
287};
288
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100289/** Data set containing large tensor shapes. */
290class LargeShapes final : public ShapeDataset
291{
292public:
293 LargeShapes()
294 : ShapeDataset("Shape",
295 {
Michalis Spyrou97b2bb12019-05-28 16:59:27 +0100296 TensorShape{ 582U, 131U, 1U, 4U },
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100297 })
298 {
299 }
300};
301
Diego Lopez Recas0021d752017-12-18 14:42:56 +0000302/** Data set containing pairs of large tensor shapes that are broadcast compatible. */
303class LargeShapesBroadcast final : public framework::dataset::ZipDataset<ShapeDataset, ShapeDataset>
304{
305public:
306 LargeShapesBroadcast()
307 : ZipDataset<ShapeDataset, ShapeDataset>(
308 ShapeDataset("Shape0",
309 {
310 TensorShape{ 1921U, 541U },
311 TensorShape{ 1U, 485U, 2U, 3U },
312 TensorShape{ 4159U, 1U },
313 TensorShape{ 799U }
314 }),
315 ShapeDataset("Shape1",
316 {
317 TensorShape{ 1921U, 1U, 2U },
318 TensorShape{ 641U, 1U, 2U, 3U },
319 TensorShape{ 1U, 127U, 25U },
320 TensorShape{ 799U, 595U, 1U, 4U }
321 }))
322 {
323 }
324};
325
Gian Marco5420b282017-11-29 10:41:38 +0000326/** Data set containing large 1D tensor shapes. */
327class Large1DShapes final : public ShapeDataset
328{
329public:
330 Large1DShapes()
331 : ShapeDataset("Shape",
332 {
333 TensorShape{ 1921U },
334 TensorShape{ 1245U },
335 TensorShape{ 4160U }
336 })
337 {
338 }
339};
340
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100341/** Data set containing large 2D tensor shapes. */
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100342class Large2DShapes final : public ShapeDataset
343{
344public:
345 Large2DShapes()
346 : ShapeDataset("Shape",
347 {
348 TensorShape{ 1920U, 1080U },
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +0100349 TensorShape{ 1245U, 652U },
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100350 TensorShape{ 4160U, 3120U }
351 })
352 {
353 }
354};
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100355
Gian Marco Iodice06b184a2017-08-29 16:05:25 +0100356/** Data set containing large 3D tensor shapes. */
357class Large3DShapes final : public ShapeDataset
358{
359public:
360 Large3DShapes()
361 : ShapeDataset("Shape",
362 {
363 TensorShape{ 320U, 240U, 3U },
364 TensorShape{ 383U, 653U, 2U },
365 TensorShape{ 721U, 123U, 13U }
366 })
367 {
368 }
369};
370
371/** Data set containing large 4D tensor shapes. */
372class Large4DShapes final : public ShapeDataset
373{
374public:
375 Large4DShapes()
376 : ShapeDataset("Shape",
377 {
378 TensorShape{ 320U, 123U, 3U, 3U },
379 TensorShape{ 383U, 413U, 2U, 3U },
380 TensorShape{ 517U, 123U, 13U, 2U }
381 })
382 {
383 }
384};
385
Gian Marco Iodice247f52c2018-03-22 11:24:56 +0000386/** Data set containing small 3x3 tensor shapes. */
387class Small3x3Shapes final : public ShapeDataset
388{
389public:
390 Small3x3Shapes()
391 : ShapeDataset("Shape",
392 {
393 TensorShape{ 3U, 3U, 7U, 4U },
394 TensorShape{ 3U, 3U, 4U, 13U },
Gian Marco Iodice247f52c2018-03-22 11:24:56 +0000395 TensorShape{ 3U, 3U, 3U, 5U },
396 })
397 {
398 }
399};
400
Gian Marco Iodicef1c2bf02018-06-13 14:05:54 +0100401/** Data set containing small 3x1 tensor shapes. */
402class Small3x1Shapes final : public ShapeDataset
403{
404public:
405 Small3x1Shapes()
406 : ShapeDataset("Shape",
407 {
408 TensorShape{ 3U, 1U, 7U, 4U },
409 TensorShape{ 3U, 1U, 4U, 13U },
Gian Marco Iodicef1c2bf02018-06-13 14:05:54 +0100410 TensorShape{ 3U, 1U, 3U, 5U },
411 })
412 {
413 }
414};
415
416/** Data set containing small 1x3 tensor shapes. */
417class Small1x3Shapes final : public ShapeDataset
418{
419public:
420 Small1x3Shapes()
421 : ShapeDataset("Shape",
422 {
423 TensorShape{ 1U, 3U, 7U, 4U },
424 TensorShape{ 1U, 3U, 4U, 13U },
Gian Marco Iodicef1c2bf02018-06-13 14:05:54 +0100425 TensorShape{ 1U, 3U, 3U, 5U },
426 })
427 {
428 }
429};
430
Gian Marco Iodice247f52c2018-03-22 11:24:56 +0000431/** Data set containing large 3x3 tensor shapes. */
432class Large3x3Shapes final : public ShapeDataset
433{
434public:
435 Large3x3Shapes()
436 : ShapeDataset("Shape",
437 {
438 TensorShape{ 3U, 3U, 32U, 64U },
439 TensorShape{ 3U, 3U, 51U, 13U },
440 TensorShape{ 3U, 3U, 53U, 47U },
Gian Marco Iodice247f52c2018-03-22 11:24:56 +0000441 })
442 {
443 }
444};
445
Gian Marco Iodicef1c2bf02018-06-13 14:05:54 +0100446/** Data set containing large 3x1 tensor shapes. */
447class Large3x1Shapes final : public ShapeDataset
448{
449public:
450 Large3x1Shapes()
451 : ShapeDataset("Shape",
452 {
453 TensorShape{ 3U, 1U, 32U, 64U },
454 TensorShape{ 3U, 1U, 51U, 13U },
455 TensorShape{ 3U, 1U, 53U, 47U },
Gian Marco Iodicef1c2bf02018-06-13 14:05:54 +0100456 })
457 {
458 }
459};
460
461/** Data set containing large 1x3 tensor shapes. */
462class Large1x3Shapes final : public ShapeDataset
463{
464public:
465 Large1x3Shapes()
466 : ShapeDataset("Shape",
467 {
468 TensorShape{ 1U, 3U, 32U, 64U },
469 TensorShape{ 1U, 3U, 51U, 13U },
470 TensorShape{ 1U, 3U, 53U, 47U },
Gian Marco Iodicef1c2bf02018-06-13 14:05:54 +0100471 })
472 {
473 }
474};
475
Giorgio Arena9373c8b2018-04-11 19:07:17 +0100476/** Data set containing small 5x5 tensor shapes. */
477class Small5x5Shapes final : public ShapeDataset
478{
479public:
480 Small5x5Shapes()
481 : ShapeDataset("Shape",
482 {
483 TensorShape{ 5U, 5U, 7U, 4U },
484 TensorShape{ 5U, 5U, 4U, 13U },
Giorgio Arena9373c8b2018-04-11 19:07:17 +0100485 TensorShape{ 5U, 5U, 3U, 5U },
486 })
487 {
488 }
489};
490
491/** Data set containing large 5x5 tensor shapes. */
492class Large5x5Shapes final : public ShapeDataset
493{
494public:
495 Large5x5Shapes()
496 : ShapeDataset("Shape",
497 {
498 TensorShape{ 5U, 5U, 32U, 64U },
499 TensorShape{ 5U, 5U, 51U, 13U },
500 TensorShape{ 5U, 5U, 53U, 47U },
Giorgio Arena9373c8b2018-04-11 19:07:17 +0100501 })
502 {
503 }
504};
505
Gian Marco Iodice876be2a2018-07-03 12:22:09 +0100506/** Data set containing small 5x1 tensor shapes. */
507class Small5x1Shapes final : public ShapeDataset
508{
509public:
510 Small5x1Shapes()
511 : ShapeDataset("Shape",
512 {
513 TensorShape{ 5U, 1U, 7U, 4U },
514 TensorShape{ 5U, 1U, 4U, 13U },
Gian Marco Iodice876be2a2018-07-03 12:22:09 +0100515 TensorShape{ 5U, 1U, 3U, 5U },
516 })
517 {
518 }
519};
520
521/** Data set containing large 5x1 tensor shapes. */
522class Large5x1Shapes final : public ShapeDataset
523{
524public:
525 Large5x1Shapes()
526 : ShapeDataset("Shape",
527 {
528 TensorShape{ 5U, 1U, 32U, 64U },
529 TensorShape{ 5U, 1U, 51U, 13U },
530 TensorShape{ 5U, 1U, 53U, 47U },
Gian Marco Iodice876be2a2018-07-03 12:22:09 +0100531 })
532 {
533 }
534};
535
536/** Data set containing small 1x5 tensor shapes. */
537class Small1x5Shapes final : public ShapeDataset
538{
539public:
540 Small1x5Shapes()
541 : ShapeDataset("Shape",
542 {
543 TensorShape{ 1U, 5U, 7U, 4U },
544 TensorShape{ 1U, 5U, 4U, 13U },
Gian Marco Iodice876be2a2018-07-03 12:22:09 +0100545 TensorShape{ 1U, 5U, 3U, 5U },
546 })
547 {
548 }
549};
550
551/** Data set containing large 1x5 tensor shapes. */
552class Large1x5Shapes final : public ShapeDataset
553{
554public:
555 Large1x5Shapes()
556 : ShapeDataset("Shape",
557 {
558 TensorShape{ 1U, 5U, 32U, 64U },
559 TensorShape{ 1U, 5U, 51U, 13U },
560 TensorShape{ 1U, 5U, 53U, 47U },
Gian Marco Iodice876be2a2018-07-03 12:22:09 +0100561 })
562 {
563 }
564};
565
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000566/** Data set containing small 1x7 tensor shapes. */
567class Small1x7Shapes final : public ShapeDataset
568{
569public:
570 Small1x7Shapes()
571 : ShapeDataset("Shape",
572 {
573 TensorShape{ 1U, 7U, 7U, 4U },
574 TensorShape{ 1U, 7U, 4U, 13U },
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000575 TensorShape{ 1U, 7U, 3U, 5U },
576 })
577 {
578 }
579};
580
581/** Data set containing large 1x7 tensor shapes. */
582class Large1x7Shapes final : public ShapeDataset
583{
584public:
585 Large1x7Shapes()
586 : ShapeDataset("Shape",
587 {
588 TensorShape{ 1U, 7U, 32U, 64U },
589 TensorShape{ 1U, 7U, 51U, 13U },
590 TensorShape{ 1U, 7U, 53U, 47U },
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000591 })
592 {
593 }
594};
595
596/** Data set containing small 7x7 tensor shapes. */
597class Small7x7Shapes final : public ShapeDataset
598{
599public:
600 Small7x7Shapes()
601 : ShapeDataset("Shape",
602 {
603 TensorShape{ 7U, 7U, 7U, 4U },
604 TensorShape{ 7U, 7U, 4U, 13U },
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000605 TensorShape{ 7U, 7U, 3U, 5U },
606 })
607 {
608 }
609};
610
611/** Data set containing large 7x7 tensor shapes. */
612class Large7x7Shapes final : public ShapeDataset
613{
614public:
615 Large7x7Shapes()
616 : ShapeDataset("Shape",
617 {
618 TensorShape{ 7U, 7U, 32U, 64U },
619 TensorShape{ 7U, 7U, 51U, 13U },
620 TensorShape{ 7U, 7U, 53U, 47U },
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000621 })
622 {
623 }
624};
625
626/** Data set containing small 7x1 tensor shapes. */
627class Small7x1Shapes final : public ShapeDataset
628{
629public:
630 Small7x1Shapes()
631 : ShapeDataset("Shape",
632 {
633 TensorShape{ 7U, 1U, 7U, 4U },
634 TensorShape{ 7U, 1U, 4U, 13U },
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000635 TensorShape{ 7U, 1U, 3U, 5U },
636 })
637 {
638 }
639};
640
641/** Data set containing large 7x1 tensor shapes. */
642class Large7x1Shapes final : public ShapeDataset
643{
644public:
645 Large7x1Shapes()
646 : ShapeDataset("Shape",
647 {
648 TensorShape{ 7U, 1U, 32U, 64U },
649 TensorShape{ 7U, 1U, 51U, 13U },
650 TensorShape{ 7U, 1U, 53U, 47U },
Michele Di Giorgio881c6842019-02-27 14:26:51 +0000651 })
652 {
653 }
654};
655
Pablo Tellof5f34bb2017-08-22 13:34:13 +0100656/** Data set containing small tensor shapes for deconvolution. */
657class SmallDeconvolutionShapes final : public ShapeDataset
658{
659public:
660 SmallDeconvolutionShapes()
661 : ShapeDataset("InputShape",
662 {
Georgios Pinitasced7a8d2018-02-01 16:31:33 +0000663 TensorShape{ 5U, 4U, 3U, 2U },
Pablo Tellof5f34bb2017-08-22 13:34:13 +0100664 TensorShape{ 5U, 5U, 3U },
665 TensorShape{ 11U, 13U, 4U, 3U }
666 })
667 {
668 }
669};
670
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000671/** Data set containing tiny tensor shapes for direct convolution. */
672class TinyDirectConvolutionShapes final : public ShapeDataset
673{
674public:
675 TinyDirectConvolutionShapes()
676 : ShapeDataset("InputShape",
677 {
678 // Batch size 1
679 TensorShape{ 11U, 13U, 3U },
680 TensorShape{ 7U, 27U, 3U }
681 })
682 {
683 }
684};
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100685/** Data set containing small tensor shapes for direct convolution. */
686class SmallDirectConvolutionShapes final : public ShapeDataset
687{
688public:
689 SmallDirectConvolutionShapes()
690 : ShapeDataset("InputShape",
691 {
SiCong Licaf8c5e2017-08-21 13:12:52 +0100692 // Batch size 1
Sang-Hoon Parkcecb0a72019-09-17 08:59:09 +0100693 TensorShape{ 32U, 37U, 3U },
SiCong Licaf8c5e2017-08-21 13:12:52 +0100694 // Batch size 4
SiCong Licaf8c5e2017-08-21 13:12:52 +0100695 TensorShape{ 32U, 37U, 3U, 4U },
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100696 })
697 {
698 }
699};
Gian Marco Iodiceb2833b82017-09-13 16:23:18 +0100700
Xinghang Zhou33ff9ef2018-01-17 11:23:39 +0800701/** Data set containing small tensor shapes for direct convolution. */
702class SmallDirectConvolutionTensorShiftShapes final : public ShapeDataset
703{
704public:
705 SmallDirectConvolutionTensorShiftShapes()
706 : ShapeDataset("InputShape",
707 {
708 // Batch size 1
Sang-Hoon Parkcecb0a72019-09-17 08:59:09 +0100709 TensorShape{ 32U, 37U, 3U },
Xinghang Zhou33ff9ef2018-01-17 11:23:39 +0800710 // Batch size 4
711 TensorShape{ 32U, 37U, 3U, 4U },
Xinghang Zhou33ff9ef2018-01-17 11:23:39 +0800712 // Arbitrary batch size
713 TensorShape{ 32U, 37U, 3U, 8U }
714 })
715 {
716 }
717};
718
Giorgio Arena0f170392018-07-18 16:13:12 +0100719/** Data set containing small grouped im2col tensor shapes. */
720class GroupedIm2ColSmallShapes final : public ShapeDataset
721{
722public:
723 GroupedIm2ColSmallShapes()
724 : ShapeDataset("Shape",
725 {
726 TensorShape{ 11U, 11U, 48U },
727 TensorShape{ 27U, 13U, 24U },
728 TensorShape{ 128U, 64U, 12U, 3U },
729 TensorShape{ 11U, 11U, 48U, 4U },
730 TensorShape{ 27U, 13U, 24U, 4U },
731 TensorShape{ 11U, 11U, 48U, 5U }
732 })
733 {
734 }
735};
736
737/** Data set containing large grouped im2col tensor shapes. */
738class GroupedIm2ColLargeShapes final : public ShapeDataset
739{
740public:
741 GroupedIm2ColLargeShapes()
742 : ShapeDataset("Shape",
743 {
Georgios Pinitas2a518182018-08-13 15:53:31 +0100744 TensorShape{ 153U, 231U, 12U },
745 TensorShape{ 123U, 191U, 12U, 2U },
Giorgio Arena0f170392018-07-18 16:13:12 +0100746 })
747 {
748 }
749};
750
Giorgio Arenac6aa49b2018-08-07 11:53:30 +0100751/** Data set containing small grouped weights tensor shapes. */
752class GroupedWeightsSmallShapes final : public ShapeDataset
753{
754public:
755 GroupedWeightsSmallShapes()
756 : ShapeDataset("Shape",
757 {
758 TensorShape{ 3U, 3U, 48U, 120U },
759 TensorShape{ 1U, 3U, 24U, 240U },
760 TensorShape{ 3U, 1U, 12U, 480U },
761 TensorShape{ 5U, 5U, 48U, 120U },
762 TensorShape{ 1U, 5U, 24U, 240U },
763 TensorShape{ 5U, 1U, 48U, 480U }
764 })
765 {
766 }
767};
768
769/** Data set containing large grouped weights tensor shapes. */
770class GroupedWeightsLargeShapes final : public ShapeDataset
771{
772public:
773 GroupedWeightsLargeShapes()
774 : ShapeDataset("Shape",
775 {
776 TensorShape{ 9U, 9U, 96U, 240U },
777 TensorShape{ 7U, 9U, 48U, 480U },
778 TensorShape{ 9U, 7U, 24U, 960U },
779 TensorShape{ 13U, 13U, 96U, 240U },
780 TensorShape{ 11U, 13U, 48U, 480U },
781 TensorShape{ 13U, 11U, 24U, 960U }
782 })
783 {
784 }
785};
786
Giorgio Arena04a8f8c2017-11-23 11:45:24 +0000787/** Data set containing 2D tensor shapes for DepthConcatenateLayer. */
788class DepthConcatenateLayerShapes final : public ShapeDataset
Gian Marco Iodiceb2833b82017-09-13 16:23:18 +0100789{
790public:
Giorgio Arena04a8f8c2017-11-23 11:45:24 +0000791 DepthConcatenateLayerShapes()
Gian Marco Iodiceb2833b82017-09-13 16:23:18 +0100792 : ShapeDataset("Shape",
793 {
794 TensorShape{ 322U, 243U },
795 TensorShape{ 463U, 879U },
796 TensorShape{ 416U, 651U }
797 })
798 {
799 }
800};
801
Pablo Tello3dd5b682019-03-04 14:14:02 +0000802/** Data set containing tensor shapes for ConcatenateLayer. */
803class ConcatenateLayerShapes final : public ShapeDataset
Michalis Spyrou55b3d122018-05-09 09:59:23 +0100804{
805public:
Pablo Tello3dd5b682019-03-04 14:14:02 +0000806 ConcatenateLayerShapes()
Michalis Spyrou55b3d122018-05-09 09:59:23 +0100807 : ShapeDataset("Shape",
808 {
809 TensorShape{ 232U, 65U, 3U },
810 TensorShape{ 432U, 65U, 3U },
Michele Di Giorgioe6dbde02018-10-19 15:46:19 +0100811 TensorShape{ 124U, 65U, 3U },
812 TensorShape{ 124U, 65U, 3U, 4U }
Michalis Spyrou55b3d122018-05-09 09:59:23 +0100813 })
814 {
815 }
816};
817
Gian Marco Iodicebf179552017-09-05 13:51:21 +0100818/** Data set containing global pooling tensor shapes. */
819class GlobalPoolingShapes final : public ShapeDataset
820{
821public:
822 GlobalPoolingShapes()
823 : ShapeDataset("Shape",
824 {
825 // Batch size 1
826 TensorShape{ 9U, 9U },
827 TensorShape{ 13U, 13U, 2U },
828 TensorShape{ 27U, 27U, 1U, 3U },
829 // Batch size 4
830 TensorShape{ 31U, 31U, 3U, 4U },
831 TensorShape{ 34U, 34U, 2U, 4U }
832 })
833 {
834 }
835};
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000836/** Data set containing tiny softmax layer shapes. */
837class SoftmaxLayerTinyShapes final : public ShapeDataset
838{
839public:
840 SoftmaxLayerTinyShapes()
841 : ShapeDataset("Shape",
842 {
843 TensorShape{ 9U, 9U },
Georgios Pinitas17d6d3c2018-07-02 17:52:40 +0100844 TensorShape{ 128U, 10U },
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000845 })
846 {
847 }
848};
Gian Marco Iodicebf179552017-09-05 13:51:21 +0100849
Chunosovd6afedc2017-11-06 22:09:45 +0700850/** Data set containing small softmax layer shapes. */
851class SoftmaxLayerSmallShapes final : public ShapeDataset
852{
853public:
854 SoftmaxLayerSmallShapes()
855 : ShapeDataset("Shape",
856 {
857 TensorShape{ 9U, 9U },
Georgios Pinitas17d6d3c2018-07-02 17:52:40 +0100858 TensorShape{ 256U, 10U },
859 TensorShape{ 353U, 8U },
860 TensorShape{ 781U, 5U },
Chunosovd6afedc2017-11-06 22:09:45 +0700861 })
862 {
863 }
864};
865
866/** Data set containing large softmax layer shapes. */
867class SoftmaxLayerLargeShapes final : public ShapeDataset
868{
869public:
870 SoftmaxLayerLargeShapes()
871 : ShapeDataset("Shape",
872 {
873 TensorShape{ 1000U, 10U },
Georgios Pinitas17d6d3c2018-07-02 17:52:40 +0100874 TensorShape{ 3989U, 10U },
Chunosovd6afedc2017-11-06 22:09:45 +0700875 TensorShape{ 7339U, 11U },
Giuseppe Rossini87e896a2018-08-24 10:24:12 +0100876
877 })
878 {
879 }
880};
881
882/** Data set containing large and small softmax layer 4D shapes. */
883class SoftmaxLayer4DShapes final : public ShapeDataset
884{
885public:
886 SoftmaxLayer4DShapes()
887 : ShapeDataset("Shape",
888 {
889 TensorShape{ 9U, 9U, 9U, 9U },
890 TensorShape{ 256U, 10U, 1U, 9U },
891 TensorShape{ 353U, 8U, 2U },
892 TensorShape{ 781U, 5U, 2U, 2U },
893 TensorShape{ 781U, 11U, 1U, 2U },
Chunosovd6afedc2017-11-06 22:09:45 +0700894 })
895 {
896 }
897};
898
Ioan-Cristian Szabo2c350182017-12-20 16:27:37 +0000899/** Data set containing 2D tensor shapes relative to an image size. */
900class SmallImageShapes final : public ShapeDataset
901{
902public:
903 SmallImageShapes()
904 : ShapeDataset("Shape",
905 {
906 TensorShape{ 640U, 480U },
907 TensorShape{ 800U, 600U },
908 TensorShape{ 1200U, 800U }
909 })
910 {
911 }
912};
913
914/** Data set containing 2D tensor shapes relative to an image size. */
915class LargeImageShapes final : public ShapeDataset
916{
917public:
918 LargeImageShapes()
919 : ShapeDataset("Shape",
920 {
921 TensorShape{ 1920U, 1080U },
922 TensorShape{ 2560U, 1536U },
923 TensorShape{ 3584U, 2048U }
924 })
925 {
926 }
927};
Giorgio Arena73023022018-09-04 14:55:55 +0100928
929/** Data set containing small YOLO tensor shapes. */
930class SmallYOLOShapes final : public ShapeDataset
931{
932public:
933 SmallYOLOShapes()
934 : ShapeDataset("Shape",
935 {
936 // Batch size 1
937 TensorShape{ 11U, 11U, 270U },
938 TensorShape{ 27U, 13U, 90U },
Gian Marco Iodice8e1f3c02018-09-13 15:56:47 +0100939 TensorShape{ 13U, 12U, 45U, 2U },
Giorgio Arena73023022018-09-04 14:55:55 +0100940 })
941 {
942 }
943};
944
945/** Data set containing large YOLO tensor shapes. */
946class LargeYOLOShapes final : public ShapeDataset
947{
948public:
949 LargeYOLOShapes()
950 : ShapeDataset("Shape",
951 {
952 TensorShape{ 24U, 23U, 270U },
953 TensorShape{ 51U, 63U, 90U, 2U },
954 TensorShape{ 76U, 91U, 45U, 3U }
955 })
956 {
957 }
958};
Gian Marco Iodice5ba5e092018-12-06 17:13:09 +0000959
960/** Data set containing small tensor shapes to be used with the GEMM reshaping kernel */
961class SmallGEMMReshape2DShapes final : public ShapeDataset
962{
963public:
964 SmallGEMMReshape2DShapes()
965 : ShapeDataset("Shape",
966 {
967 TensorShape{ 63U, 72U },
968 })
969 {
970 }
971};
972
973/** Data set containing small tensor shapes to be used with the GEMM reshaping kernel when the input has to be reinterpreted as 3D */
974class SmallGEMMReshape3DShapes final : public ShapeDataset
975{
976public:
977 SmallGEMMReshape3DShapes()
978 : ShapeDataset("Shape",
979 {
980 TensorShape{ 63U, 9U, 8U },
981 })
982 {
983 }
984};
985
986/** Data set containing large tensor shapes to be used with the GEMM reshaping kernel */
987class LargeGEMMReshape2DShapes final : public ShapeDataset
988{
989public:
990 LargeGEMMReshape2DShapes()
991 : ShapeDataset("Shape",
992 {
993 TensorShape{ 16U, 27U },
994 TensorShape{ 533U, 171U },
995 TensorShape{ 345U, 612U }
996 })
997 {
998 }
999};
1000
1001/** Data set containing large tensor shapes to be used with the GEMM reshaping kernel when the input has to be reinterpreted as 3D */
1002class LargeGEMMReshape3DShapes final : public ShapeDataset
1003{
1004public:
1005 LargeGEMMReshape3DShapes()
1006 : ShapeDataset("Shape",
1007 {
1008 TensorShape{ 16U, 3U, 9U },
1009 TensorShape{ 533U, 19U, 9U },
1010 TensorShape{ 345U, 34U, 18U }
1011 })
1012 {
1013 }
1014};
Pablo Telloe96e4f02018-12-21 16:47:23 +00001015
1016/** Data set containing small 2D tensor shapes. */
1017class Small2DNonMaxSuppressionShapes final : public ShapeDataset
1018{
1019public:
1020 Small2DNonMaxSuppressionShapes()
1021 : ShapeDataset("Shape",
1022 {
1023 TensorShape{ 4U, 7U },
1024 TensorShape{ 4U, 13U },
1025 TensorShape{ 4U, 64U }
1026 })
1027 {
1028 }
1029};
1030
1031/** Data set containing large 2D tensor shapes. */
1032class Large2DNonMaxSuppressionShapes final : public ShapeDataset
1033{
1034public:
1035 Large2DNonMaxSuppressionShapes()
1036 : ShapeDataset("Shape",
1037 {
1038 TensorShape{ 4U, 207U },
1039 TensorShape{ 4U, 113U },
1040 TensorShape{ 4U, 264U }
1041 })
1042 {
1043 }
1044};
1045
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +01001046} // namespace datasets
1047} // namespace test
1048} // namespace arm_compute
1049#endif /* __ARM_COMPUTE_TEST_SHAPE_DATASETS_H__ */