blob: a693be71539801e4797c47b8221550c62ef5e707 [file] [log] [blame]
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +01001/*
2 * Copyright (c) 2017 ARM Limited.
3 *
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"
28#include "framework/datasets/Datasets.h"
29
30#include <type_traits>
31
32namespace arm_compute
33{
34namespace test
35{
36namespace datasets
37{
Moritz Pflanzerb3d25792017-07-26 11:49:37 +010038/** Data set containing 1D tensor shapes. */
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010039class Small1DShape final : public framework::dataset::SingletonDataset<TensorShape>
40{
41public:
42 Small1DShape()
43 : SingletonDataset("Shape", TensorShape{ 256U })
44 {
45 }
46};
47
48/** Parent type for all for shape datasets. */
49using ShapeDataset = framework::dataset::ContainerDataset<std::vector<TensorShape>>;
50
Moritz Pflanzerb3d25792017-07-26 11:49:37 +010051/** Data set containing small 2D tensor shapes. */
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010052class Small2DShapes final : public ShapeDataset
53{
54public:
55 Small2DShapes()
56 : ShapeDataset("Shape",
57 {
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010058 TensorShape{ 7U, 7U },
59 TensorShape{ 27U, 13U },
60 TensorShape{ 128U, 64U }
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010061 })
62 {
63 }
64};
65
66/** Data set containing small tensor shapes. */
67class SmallShapes final : public ShapeDataset
68{
69public:
70 SmallShapes()
71 : ShapeDataset("Shape",
72 {
SiCong Licaf8c5e2017-08-21 13:12:52 +010073 // Batch size 1
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010074 TensorShape{ 7U, 7U },
75 TensorShape{ 27U, 13U, 2U },
SiCong Licaf8c5e2017-08-21 13:12:52 +010076 TensorShape{ 128U, 64U, 1U, 3U },
77 // Batch size 4
78 TensorShape{ 7U, 7U, 4U },
79 TensorShape{ 27U, 13U, 2U, 4U },
80 TensorShape{ 128U, 64U, 1U, 3U, 4U },
81 // Arbitrary batch size
82 TensorShape{ 7U, 7U, 5U }
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010083 })
84 {
85 }
86};
87
88/** Data set containing large tensor shapes. */
89class LargeShapes final : public ShapeDataset
90{
91public:
92 LargeShapes()
93 : ShapeDataset("Shape",
94 {
SiCong Licaf8c5e2017-08-21 13:12:52 +010095 // Batch size 1
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +010096 TensorShape{ 1920U, 1080U },
97 TensorShape{ 1245U, 652U, 1U, 3U },
SiCong Licaf8c5e2017-08-21 13:12:52 +010098 TensorShape{ 4160U, 3120U },
99 // Batch size 4
100 TensorShape{ 1920U, 1080U, 4U },
101 TensorShape{ 1245U, 652U, 1U, 3U, 4U },
102 TensorShape{ 4160U, 3120U, 4U },
103 // Batch size 8
104 TensorShape{ 1920U, 1080U, 8U },
105 TensorShape{ 1245U, 652U, 1U, 3U, 8U },
106 TensorShape{ 4160U, 3120U, 8U },
107 // Arbitrary batch size
108 TensorShape{ 1920U, 1080U, 5U },
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100109 })
110 {
111 }
112};
113
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100114/** Data set containing large 2D tensor shapes. */
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100115class Large2DShapes final : public ShapeDataset
116{
117public:
118 Large2DShapes()
119 : ShapeDataset("Shape",
120 {
121 TensorShape{ 1920U, 1080U },
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +0100122 TensorShape{ 1245U, 652U },
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100123 TensorShape{ 4160U, 3120U }
124 })
125 {
126 }
127};
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100128
129/** Data set containing small tensor shapes for direct convolution. */
130class SmallDirectConvolutionShapes final : public ShapeDataset
131{
132public:
133 SmallDirectConvolutionShapes()
134 : ShapeDataset("InputShape",
135 {
SiCong Licaf8c5e2017-08-21 13:12:52 +0100136 // Batch size 1
137 TensorShape{ 5U, 5U, 3U },
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100138 TensorShape{ 32U, 37U, 3U },
SiCong Licaf8c5e2017-08-21 13:12:52 +0100139 TensorShape{ 13U, 15U, 8U },
140 // Batch size 4
141 TensorShape{ 5U, 5U, 3U, 4U },
142 TensorShape{ 32U, 37U, 3U, 4U },
143 TensorShape{ 13U, 15U, 8U, 4U },
144 // Batch size 8
145 TensorShape{ 5U, 5U, 3U, 8U },
146 TensorShape{ 32U, 37U, 3U, 8U },
147 TensorShape{ 13U, 15U, 8U, 8U },
148 // Arbitrary batch size
149 TensorShape{ 32U, 37U, 3U, 8U }
Moritz Pflanzerb3d25792017-07-26 11:49:37 +0100150 })
151 {
152 }
153};
Moritz Pflanzerf6ad98a2017-07-21 17:19:58 +0100154} // namespace datasets
155} // namespace test
156} // namespace arm_compute
157#endif /* __ARM_COMPUTE_TEST_SHAPE_DATASETS_H__ */