1
// Tencent is pleased to support the open source community by making ncnn available.
3
// Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5
// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
6
// in compliance with the License. You may obtain a copy of the License at
8
// https://opensource.org/licenses/BSD-3-Clause
10
// Unless required by applicable law or agreed to in writing, software distributed
11
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
// specific language governing permissions and limitations under the License.
17
static int test_reshape(const ncnn::Mat& a, int outw, int outh, int outd, int outc)
22
pd.set(11, outd); // d
25
std::vector<ncnn::Mat> weights(0);
27
int ret = test_layer("Reshape", pd, weights, a);
30
fprintf(stderr, "test_reshape failed a.dims=%d a=(%d %d %d %d) outw=%d outh=%d outd=%d outc=%d\n", a.dims, a.w, a.h, a.d, a.c, outw, outh, outd, outc);
36
static int test_reshape_0()
38
ncnn::Mat a = RandomMat(3, 8, 5, 32);
41
|| test_reshape(a, 5, 8, 3, 32)
42
|| test_reshape(a, 3, 8, 32, 5)
43
|| test_reshape(a, 32, 5, 8, 3)
44
|| test_reshape(a, 4, 3, 16, -1)
45
|| test_reshape(a, 6, 16, -1, 2)
46
|| test_reshape(a, 4, -1, 8, 8)
47
|| test_reshape(a, -1, 16, 6, 2)
48
|| test_reshape(a, 16, 6, -233, -1)
49
|| test_reshape(a, 8, -1, -233, 8)
50
|| test_reshape(a, -1, 6, -233, 16)
51
|| test_reshape(a, 8, -1, -233, -233)
52
|| test_reshape(a, -1, 6, -233, -233)
53
|| test_reshape(a, -1, -233, -233, -233);
56
static int test_reshape_1()
58
ncnn::Mat a = RandomMat(4, 5, 12, 26);
61
|| test_reshape(a, 12, 5, 4, 26)
62
|| test_reshape(a, 4, 26, 12, 5)
63
|| test_reshape(a, 13, 5, 12, 8)
64
|| test_reshape(a, 2, 10, 8, -1)
65
|| test_reshape(a, 13, 4, -1, 10)
66
|| test_reshape(a, 13, -1, 12, 4)
67
|| test_reshape(a, -1, 26, 3, 16)
68
|| test_reshape(a, 13, 4, -233, -1)
69
|| test_reshape(a, 26, -1, -233, 12)
70
|| test_reshape(a, -1, 13, -233, 16)
71
|| test_reshape(a, 12, -1, -233, -233)
72
|| test_reshape(a, -1, 24, -233, -233)
73
|| test_reshape(a, -1, -233, -233, -233);
76
static int test_reshape_2()
78
ncnn::Mat a = RandomMat(6, 7, 32);
81
|| test_reshape(a, 6, 8, 4, 7)
82
|| test_reshape(a, 2, 6, 7, 16)
83
|| test_reshape(a, 7, 6, -233, 32)
84
|| test_reshape(a, 6, 32, -233, 7)
85
|| test_reshape(a, 32, 7, -233, 6)
86
|| test_reshape(a, 2, 6, -233, -1)
87
|| test_reshape(a, -1, 8, -233, 2)
88
|| test_reshape(a, -1, 4, -233, -233)
89
|| test_reshape(a, 8, -1, -233, -233)
90
|| test_reshape(a, 32, 42, -233, -233)
91
|| test_reshape(a, -1, -233, -233, -233);
94
static int test_reshape_3()
96
ncnn::Mat a = RandomMat(4, 14, 26);
99
|| test_reshape(a, 13, 4, 2, 14)
100
|| test_reshape(a, 1, 13, 7, 16)
101
|| test_reshape(a, 14, 8, -233, 13)
102
|| test_reshape(a, 4, 13, -233, 28)
103
|| test_reshape(a, 13, 14, -233, 8)
104
|| test_reshape(a, 2, 7, -233, -1)
105
|| test_reshape(a, -1, 13, -233, 2)
106
|| test_reshape(a, -1, 4, -233, -233)
107
|| test_reshape(a, 8, -1, -233, -233)
108
|| test_reshape(a, 16, 91, -233, -233)
109
|| test_reshape(a, -1, -233, -233, -233);
112
static int test_reshape_4()
114
ncnn::Mat a = RandomMat(14, 32);
117
|| test_reshape(a, 2, 7, 2, 16)
118
|| test_reshape(a, 16, 1, 7, 4)
119
|| test_reshape(a, 7, 2, -233, 32)
120
|| test_reshape(a, 4, 16, -233, 7)
121
|| test_reshape(a, 16, 14, -233, 2)
122
|| test_reshape(a, 2, 4, -233, -1)
123
|| test_reshape(a, -1, 8, -233, 2)
124
|| test_reshape(a, 28, 16, -233, -233)
125
|| test_reshape(a, -1, 14, -233, -233)
126
|| test_reshape(a, 16, -1, -233, -233)
127
|| test_reshape(a, -1, -233, -233, -233);
130
static int test_reshape_5()
132
ncnn::Mat a = RandomMat(12, 28);
135
|| test_reshape(a, 4, 3, 2, 14)
136
|| test_reshape(a, 1, 3, 14, 8)
137
|| test_reshape(a, 7, 2, -233, 24)
138
|| test_reshape(a, 2, 24, -233, 7)
139
|| test_reshape(a, 12, 14, -233, 2)
140
|| test_reshape(a, 2, 4, -233, -1)
141
|| test_reshape(a, -1, 4, -233, 2)
142
|| test_reshape(a, 21, 16, -233, -233)
143
|| test_reshape(a, -1, 14, -233, -233)
144
|| test_reshape(a, 3, -1, -233, -233)
145
|| test_reshape(a, -1, -233, -233, -233);
148
static int test_reshape_6()
150
ncnn::Mat a = RandomMat(240);
153
|| test_reshape(a, 1, 1, 1, 240)
154
|| test_reshape(a, 10, 1, 1, 24)
155
|| test_reshape(a, 3, 5, -233, 16)
156
|| test_reshape(a, 3, 8, -233, 10)
157
|| test_reshape(a, 8, 5, -233, 6)
158
|| test_reshape(a, 2, 5, -233, -1)
159
|| test_reshape(a, -1, 5, -233, 4)
160
|| test_reshape(a, 8, 30, -233, -233)
161
|| test_reshape(a, -1, 2, -233, -233)
162
|| test_reshape(a, 24, -1, -233, -233)
163
|| test_reshape(a, -1, -233, -233, -233);
166
static int test_reshape_7()
168
ncnn::Mat a = RandomMat(210);
171
|| test_reshape(a, 1, 1, 210, 1)
172
|| test_reshape(a, 5, 2, 7, 3)
173
|| test_reshape(a, 3, 5, -233, 14)
174
|| test_reshape(a, 3, 14, -233, 5)
175
|| test_reshape(a, 14, 5, -233, 3)
176
|| test_reshape(a, 2, 5, -233, -1)
177
|| test_reshape(a, -1, 5, -233, 2)
178
|| test_reshape(a, 6, 35, -233, -233)
179
|| test_reshape(a, -1, 7, -233, -233)
180
|| test_reshape(a, 21, -1, -233, -233)
181
|| test_reshape(a, -1, -233, -233, -233);
184
static int test_reshape_8()
186
ncnn::Mat a = RandomMat(1, 19, 15, 18);
188
return test_reshape(a, 19, 15, -233, 18);