17
static void print_float_array(const ncnn::Mat& a)
20
for (int i = 0; i < a.w; i++)
22
fprintf(stderr, " %f", a[i]);
24
fprintf(stderr, " ]");
27
static int test_eltwise(const std::vector<ncnn::Mat>& a, int op_type, const ncnn::Mat& coeffs)
33
std::vector<ncnn::Mat> weights(0);
35
int ret = test_layer("Eltwise", pd, weights, a);
38
fprintf(stderr, "test_eltwise failed a[0].dims=%d a[0]=(%d %d %d %d) op_type=%d", a[0].dims, a[0].w, a[0].h, a[0].d, a[0].c, op_type);
39
fprintf(stderr, " coeffs=");
40
print_float_array(coeffs);
41
fprintf(stderr, "\n");
47
static int test_eltwise_0()
49
std::vector<ncnn::Mat> a(2);
50
a[0] = RandomMat(16, 12, 12);
51
a[1] = RandomMat(16, 12, 12);
53
std::vector<ncnn::Mat> b(2);
54
b[0] = RandomMat(15, 11, 24);
55
b[1] = RandomMat(15, 11, 24);
57
std::vector<ncnn::Mat> c(2);
58
c[0] = RandomMat(9, 5, 7);
59
c[1] = RandomMat(9, 5, 7);
62
|| test_eltwise(a, 0, ncnn::Mat())
63
|| test_eltwise(a, 1, ncnn::Mat())
64
|| test_eltwise(a, 2, ncnn::Mat())
65
|| test_eltwise(b, 0, ncnn::Mat())
66
|| test_eltwise(b, 1, ncnn::Mat())
67
|| test_eltwise(b, 2, ncnn::Mat())
68
|| test_eltwise(c, 0, ncnn::Mat())
69
|| test_eltwise(c, 1, ncnn::Mat())
70
|| test_eltwise(c, 2, ncnn::Mat())
72
|| test_eltwise(a, 0, RandomMat(2))
73
|| test_eltwise(a, 1, RandomMat(2))
74
|| test_eltwise(a, 2, RandomMat(2))
75
|| test_eltwise(b, 0, RandomMat(2))
76
|| test_eltwise(b, 1, RandomMat(2))
77
|| test_eltwise(b, 2, RandomMat(2))
78
|| test_eltwise(c, 0, RandomMat(2))
79
|| test_eltwise(c, 1, RandomMat(2))
80
|| test_eltwise(c, 2, RandomMat(2));
83
static int test_eltwise_1()
85
std::vector<ncnn::Mat> a(3);
86
a[0] = RandomMat(15, 11, 16);
87
a[1] = RandomMat(15, 11, 16);
88
a[2] = RandomMat(15, 11, 16);
91
|| test_eltwise(a, 0, ncnn::Mat())
92
|| test_eltwise(a, 1, ncnn::Mat())
93
|| test_eltwise(a, 2, ncnn::Mat())
95
|| test_eltwise(a, 0, RandomMat(3))
96
|| test_eltwise(a, 1, RandomMat(3))
97
|| test_eltwise(a, 2, RandomMat(3));
100
static int test_eltwise_2()
102
std::vector<ncnn::Mat> a(4);
103
a[0] = RandomMat(7, 3, 5);
104
a[1] = RandomMat(7, 3, 5);
105
a[2] = RandomMat(7, 3, 5);
106
a[3] = RandomMat(7, 3, 5);
109
|| test_eltwise(a, 0, ncnn::Mat())
110
|| test_eltwise(a, 1, ncnn::Mat())
111
|| test_eltwise(a, 2, ncnn::Mat())
113
|| test_eltwise(a, 0, RandomMat(4))
114
|| test_eltwise(a, 1, RandomMat(4))
115
|| test_eltwise(a, 2, RandomMat(4));
118
static int test_eltwise_3()
120
std::vector<ncnn::Mat> a(5);
121
a[0] = RandomMat(12, 4, 16);
122
a[1] = RandomMat(12, 4, 16);
123
a[2] = RandomMat(12, 4, 16);
124
a[3] = RandomMat(12, 4, 16);
125
a[4] = RandomMat(12, 4, 16);
128
|| test_eltwise(a, 0, ncnn::Mat())
129
|| test_eltwise(a, 1, ncnn::Mat())
130
|| test_eltwise(a, 2, ncnn::Mat())
132
|| test_eltwise(a, 0, RandomMat(5))
133
|| test_eltwise(a, 1, RandomMat(5))
134
|| test_eltwise(a, 2, RandomMat(5));
137
static int test_eltwise_4()
139
std::vector<ncnn::Mat> a(2);
140
a[0] = RandomMat(16, 12);
141
a[1] = RandomMat(16, 12);
143
std::vector<ncnn::Mat> b(2);
144
b[0] = RandomMat(11, 24);
145
b[1] = RandomMat(11, 24);
147
std::vector<ncnn::Mat> c(2);
148
c[0] = RandomMat(9, 7);
149
c[1] = RandomMat(9, 7);
152
|| test_eltwise(a, 0, ncnn::Mat())
153
|| test_eltwise(a, 1, ncnn::Mat())
154
|| test_eltwise(a, 2, ncnn::Mat())
155
|| test_eltwise(b, 0, ncnn::Mat())
156
|| test_eltwise(b, 1, ncnn::Mat())
157
|| test_eltwise(b, 2, ncnn::Mat())
158
|| test_eltwise(c, 0, ncnn::Mat())
159
|| test_eltwise(c, 1, ncnn::Mat())
160
|| test_eltwise(c, 2, ncnn::Mat())
162
|| test_eltwise(a, 0, RandomMat(2))
163
|| test_eltwise(a, 1, RandomMat(2))
164
|| test_eltwise(a, 2, RandomMat(2))
165
|| test_eltwise(b, 0, RandomMat(2))
166
|| test_eltwise(b, 1, RandomMat(2))
167
|| test_eltwise(b, 2, RandomMat(2))
168
|| test_eltwise(c, 0, RandomMat(2))
169
|| test_eltwise(c, 1, RandomMat(2))
170
|| test_eltwise(c, 2, RandomMat(2));
173
static int test_eltwise_5()
175
std::vector<ncnn::Mat> a(3);
176
a[0] = RandomMat(15, 16);
177
a[1] = RandomMat(15, 16);
178
a[2] = RandomMat(15, 16);
181
|| test_eltwise(a, 0, ncnn::Mat())
182
|| test_eltwise(a, 1, ncnn::Mat())
183
|| test_eltwise(a, 2, ncnn::Mat())
185
|| test_eltwise(a, 0, RandomMat(3))
186
|| test_eltwise(a, 1, RandomMat(3))
187
|| test_eltwise(a, 2, RandomMat(3));
190
static int test_eltwise_6()
192
std::vector<ncnn::Mat> a(4);
193
a[0] = RandomMat(7, 5);
194
a[1] = RandomMat(7, 5);
195
a[2] = RandomMat(7, 5);
196
a[3] = RandomMat(7, 5);
199
|| test_eltwise(a, 0, ncnn::Mat())
200
|| test_eltwise(a, 1, ncnn::Mat())
201
|| test_eltwise(a, 2, ncnn::Mat())
203
|| test_eltwise(a, 0, RandomMat(4))
204
|| test_eltwise(a, 1, RandomMat(4))
205
|| test_eltwise(a, 2, RandomMat(4));
208
static int test_eltwise_7()
210
std::vector<ncnn::Mat> a(5);
211
a[0] = RandomMat(12, 16);
212
a[1] = RandomMat(12, 16);
213
a[2] = RandomMat(12, 16);
214
a[3] = RandomMat(12, 16);
215
a[4] = RandomMat(12, 16);
218
|| test_eltwise(a, 0, ncnn::Mat())
219
|| test_eltwise(a, 1, ncnn::Mat())
220
|| test_eltwise(a, 2, ncnn::Mat())
222
|| test_eltwise(a, 0, RandomMat(5))
223
|| test_eltwise(a, 1, RandomMat(5))
224
|| test_eltwise(a, 2, RandomMat(5));
227
static int test_eltwise_8()
229
std::vector<ncnn::Mat> a(2);
230
a[0] = RandomMat(12);
231
a[1] = RandomMat(12);
233
std::vector<ncnn::Mat> b(2);
234
b[0] = RandomMat(24);
235
b[1] = RandomMat(24);
237
std::vector<ncnn::Mat> c(2);
238
c[0] = RandomMat(19);
239
c[1] = RandomMat(19);
242
|| test_eltwise(a, 0, ncnn::Mat())
243
|| test_eltwise(a, 1, ncnn::Mat())
244
|| test_eltwise(a, 2, ncnn::Mat())
245
|| test_eltwise(b, 0, ncnn::Mat())
246
|| test_eltwise(b, 1, ncnn::Mat())
247
|| test_eltwise(b, 2, ncnn::Mat())
248
|| test_eltwise(c, 0, ncnn::Mat())
249
|| test_eltwise(c, 1, ncnn::Mat())
250
|| test_eltwise(c, 2, ncnn::Mat())
252
|| test_eltwise(a, 0, RandomMat(2))
253
|| test_eltwise(a, 1, RandomMat(2))
254
|| test_eltwise(a, 2, RandomMat(2))
255
|| test_eltwise(b, 0, RandomMat(2))
256
|| test_eltwise(b, 1, RandomMat(2))
257
|| test_eltwise(b, 2, RandomMat(2))
258
|| test_eltwise(c, 0, RandomMat(2))
259
|| test_eltwise(c, 1, RandomMat(2))
260
|| test_eltwise(c, 2, RandomMat(2));
263
static int test_eltwise_9()
265
std::vector<ncnn::Mat> a(3);
266
a[0] = RandomMat(36);
267
a[1] = RandomMat(36);
268
a[2] = RandomMat(36);
271
|| test_eltwise(a, 0, ncnn::Mat())
272
|| test_eltwise(a, 1, ncnn::Mat())
273
|| test_eltwise(a, 2, ncnn::Mat())
275
|| test_eltwise(a, 0, RandomMat(3))
276
|| test_eltwise(a, 1, RandomMat(3))
277
|| test_eltwise(a, 2, RandomMat(3));
280
static int test_eltwise_10()
282
std::vector<ncnn::Mat> a(4);
283
a[0] = RandomMat(15);
284
a[1] = RandomMat(15);
285
a[2] = RandomMat(15);
286
a[3] = RandomMat(15);
289
|| test_eltwise(a, 0, ncnn::Mat())
290
|| test_eltwise(a, 1, ncnn::Mat())
291
|| test_eltwise(a, 2, ncnn::Mat())
293
|| test_eltwise(a, 0, RandomMat(4))
294
|| test_eltwise(a, 1, RandomMat(4))
295
|| test_eltwise(a, 2, RandomMat(4));
298
static int test_eltwise_11()
300
std::vector<ncnn::Mat> a(5);
301
a[0] = RandomMat(16);
302
a[1] = RandomMat(16);
303
a[2] = RandomMat(16);
304
a[3] = RandomMat(16);
305
a[4] = RandomMat(16);
308
|| test_eltwise(a, 0, ncnn::Mat())
309
|| test_eltwise(a, 1, ncnn::Mat())
310
|| test_eltwise(a, 2, ncnn::Mat())
312
|| test_eltwise(a, 0, RandomMat(5))
313
|| test_eltwise(a, 1, RandomMat(5))
314
|| test_eltwise(a, 2, RandomMat(5));
317
static int test_eltwise_12()
319
std::vector<ncnn::Mat> a(2);
320
a[0] = RandomMat(31, 5, 3, 12);
321
a[1] = RandomMat(31, 5, 3, 12);
323
std::vector<ncnn::Mat> b(3);
324
b[0] = RandomMat(32, 4, 5, 32);
325
b[1] = RandomMat(32, 4, 5, 32);
326
b[2] = RandomMat(32, 4, 5, 32);
328
std::vector<ncnn::Mat> c(4);
329
c[0] = RandomMat(33, 6, 7, 7);
330
c[1] = RandomMat(33, 6, 7, 7);
331
c[2] = RandomMat(33, 6, 7, 7);
332
c[3] = RandomMat(33, 6, 7, 7);
335
|| test_eltwise(a, 0, ncnn::Mat())
336
|| test_eltwise(a, 1, ncnn::Mat())
337
|| test_eltwise(a, 2, ncnn::Mat())
338
|| test_eltwise(b, 0, ncnn::Mat())
339
|| test_eltwise(b, 1, ncnn::Mat())
340
|| test_eltwise(b, 2, ncnn::Mat())
341
|| test_eltwise(c, 0, ncnn::Mat())
342
|| test_eltwise(c, 1, ncnn::Mat())
343
|| test_eltwise(c, 2, ncnn::Mat())
345
|| test_eltwise(a, 0, RandomMat(2))
346
|| test_eltwise(a, 1, RandomMat(2))
347
|| test_eltwise(a, 2, RandomMat(2))
348
|| test_eltwise(b, 0, RandomMat(3))
349
|| test_eltwise(b, 1, RandomMat(3))
350
|| test_eltwise(b, 2, RandomMat(3))
351
|| test_eltwise(c, 0, RandomMat(4))
352
|| test_eltwise(c, 1, RandomMat(4))
353
|| test_eltwise(c, 2, RandomMat(4));
373
|| test_eltwise_12();