You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_crop_1.cpp 17 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. // Copyright 2020 Tencent
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. #include "testutil.h"
  4. static std::vector<int> IntArray(int a0)
  5. {
  6. std::vector<int> m(1);
  7. m[0] = a0;
  8. return m;
  9. }
  10. static std::vector<int> IntArray(int a0, int a1)
  11. {
  12. std::vector<int> m(2);
  13. m[0] = a0;
  14. m[1] = a1;
  15. return m;
  16. }
  17. static std::vector<int> IntArray(int a0, int a1, int a2)
  18. {
  19. std::vector<int> m(3);
  20. m[0] = a0;
  21. m[1] = a1;
  22. m[2] = a2;
  23. return m;
  24. }
  25. static std::vector<int> IntArray(int a0, int a1, int a2, int a3)
  26. {
  27. std::vector<int> m(4);
  28. m[0] = a0;
  29. m[1] = a1;
  30. m[2] = a2;
  31. m[3] = a3;
  32. return m;
  33. }
  34. static void print_int_array(const std::vector<int>& a)
  35. {
  36. fprintf(stderr, "[");
  37. for (size_t i = 0; i < a.size(); i++)
  38. {
  39. fprintf(stderr, " %d", a[i]);
  40. }
  41. fprintf(stderr, " ]");
  42. }
  43. static int test_crop(const ncnn::Mat& a, const std::vector<int>& starts_array, const std::vector<int>& ends_array, const std::vector<int>& axes_array)
  44. {
  45. ncnn::Mat starts(starts_array.size());
  46. {
  47. int* p = starts;
  48. for (size_t i = 0; i < starts_array.size(); i++)
  49. {
  50. p[i] = starts_array[i];
  51. }
  52. }
  53. ncnn::Mat ends(ends_array.size());
  54. {
  55. int* p = ends;
  56. for (size_t i = 0; i < ends_array.size(); i++)
  57. {
  58. p[i] = ends_array[i];
  59. }
  60. }
  61. ncnn::Mat axes(axes_array.size());
  62. {
  63. int* p = axes;
  64. for (size_t i = 0; i < axes_array.size(); i++)
  65. {
  66. p[i] = axes_array[i];
  67. }
  68. }
  69. ncnn::ParamDict pd;
  70. pd.set(9, starts); // starts
  71. pd.set(10, ends); // ends
  72. pd.set(11, axes); // axes
  73. std::vector<ncnn::Mat> weights(0);
  74. int ret = test_layer("Crop", pd, weights, a);
  75. if (ret != 0)
  76. {
  77. fprintf(stderr, "test_crop failed a.dims=%d a=(%d %d %d %d)", a.dims, a.w, a.h, a.d, a.c);
  78. fprintf(stderr, " starts=");
  79. print_int_array(starts_array);
  80. fprintf(stderr, " ends=");
  81. print_int_array(ends_array);
  82. fprintf(stderr, " axes=");
  83. print_int_array(axes_array);
  84. fprintf(stderr, "\n");
  85. }
  86. return ret;
  87. }
  88. static int test_crop_1d(const ncnn::Mat& a)
  89. {
  90. std::vector<int> params[][3] = {
  91. {IntArray(12), IntArray(-233), IntArray(0)},
  92. {IntArray(16), IntArray(-233), IntArray(0)},
  93. {IntArray(11), IntArray(11 + 16), IntArray(0)},
  94. {IntArray(12), IntArray(12 + 7), IntArray(-1)},
  95. {IntArray(16), IntArray(16 + 12), std::vector<int>()},
  96. {IntArray(11), IntArray(-7 + 1), IntArray(0)},
  97. {IntArray(12), IntArray(-12 + 1), IntArray(-1)},
  98. {IntArray(16), IntArray(-16 + 1), std::vector<int>()}
  99. };
  100. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  101. {
  102. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  103. if (ret)
  104. return ret;
  105. }
  106. return 0;
  107. }
  108. static int test_crop_2d(const ncnn::Mat& a)
  109. {
  110. std::vector<int> params[][3] = {
  111. {IntArray(12), IntArray(-233), IntArray(0)},
  112. {IntArray(8), IntArray(-233), IntArray(0)},
  113. {IntArray(4), IntArray(-233), IntArray(1)},
  114. {IntArray(5, 11), IntArray(-233, -233), IntArray(0, 1)},
  115. {IntArray(11), IntArray(11 + 16), IntArray(0)},
  116. {IntArray(12), IntArray(12 + 7), IntArray(0)},
  117. {IntArray(8), IntArray(8 + 12), IntArray(-2)},
  118. {IntArray(5), IntArray(8), IntArray(1)},
  119. {IntArray(6), IntArray(9), IntArray(1)},
  120. {IntArray(4), IntArray(12), IntArray(-1)},
  121. {IntArray(11, 5), IntArray(11 + 7, 11), IntArray(0, 1)},
  122. {IntArray(12, 6), IntArray(12 + 12, 12), IntArray(0, 1)},
  123. {IntArray(8, 4), IntArray(8 + 16, 10), IntArray(0, -1)},
  124. {IntArray(11), IntArray(-16 + 1), IntArray(0)},
  125. {IntArray(12), IntArray(-7 + 1), IntArray(0)},
  126. {IntArray(8), IntArray(-12 + 1), IntArray(-2)},
  127. {IntArray(5), IntArray(-5 + 1), IntArray(1)},
  128. {IntArray(6), IntArray(-6 + 1), IntArray(1)},
  129. {IntArray(4), IntArray(-4 + 1), IntArray(-1)},
  130. {IntArray(11, 5), IntArray(-12 + 1, -6 + 1), IntArray(0, 1)},
  131. {IntArray(12, 6), IntArray(-16 + 1, -5 + 1), IntArray(0, 1)},
  132. {IntArray(8, 4), IntArray(-7 + 1, -4 + 1), IntArray(-2, -1)}
  133. };
  134. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  135. {
  136. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  137. if (ret)
  138. return ret;
  139. }
  140. return 0;
  141. }
  142. static int test_crop_3d(const ncnn::Mat& a)
  143. {
  144. std::vector<int> params[][3] = {
  145. {IntArray(11), IntArray(-233), IntArray(0)},
  146. {IntArray(8), IntArray(-233), IntArray(0)},
  147. {IntArray(5), IntArray(-233), IntArray(1)},
  148. {IntArray(6), IntArray(-233), IntArray(2)},
  149. {IntArray(4), IntArray(-233), IntArray(-1)},
  150. {IntArray(12, 6), IntArray(-233, -233), IntArray(0, 1)},
  151. {IntArray(11, 5), IntArray(-233, -233), IntArray(0, -1)},
  152. {IntArray(8, 4), IntArray(-233, -233), IntArray(0, 2)},
  153. {IntArray(6, 6), IntArray(-233, -233), IntArray(1, -1)},
  154. {IntArray(11, 5, 5), IntArray(-233, -233, -233), IntArray(0, 1, 2)},
  155. {IntArray(8, 4, 4), IntArray(-233, -233, -233), IntArray(0, 1, -1)},
  156. {IntArray(11), IntArray(11 + 7), IntArray(0)},
  157. {IntArray(12), IntArray(12 + 12), IntArray(0)},
  158. {IntArray(8), IntArray(8 + 16), IntArray(0)},
  159. {IntArray(5), IntArray(13), IntArray(1)},
  160. {IntArray(6), IntArray(12), IntArray(1)},
  161. {IntArray(4), IntArray(11), IntArray(-2)},
  162. {IntArray(5), IntArray(12), IntArray(2)},
  163. {IntArray(6), IntArray(11), IntArray(2)},
  164. {IntArray(4), IntArray(13), IntArray(-1)},
  165. {IntArray(11, 5), IntArray(11 + 7, 11), IntArray(0, 1)},
  166. {IntArray(12, 6), IntArray(12 + 16, 12), IntArray(0, 1)},
  167. {IntArray(8, 4), IntArray(8 + 12, 13), IntArray(0, -2)},
  168. {IntArray(11, 5), IntArray(11 + 16, 13), IntArray(0, 2)},
  169. {IntArray(12, 6), IntArray(12 + 12, 11), IntArray(0, 2)},
  170. {IntArray(8, 4), IntArray(8 + 7, 12), IntArray(0, -1)},
  171. {IntArray(5, 4), IntArray(12, 12), IntArray(1, 2)},
  172. {IntArray(6, 3), IntArray(13, 13), IntArray(1, 2)},
  173. {IntArray(4, 2), IntArray(11, 11), IntArray(-2, -1)},
  174. {IntArray(11, 5, 2), IntArray(11 + 7, 11, 11), IntArray(0, 1, 2)},
  175. {IntArray(12, 6, 4), IntArray(12 + 16, 12, 12), IntArray(0, 1, 2)},
  176. {IntArray(8, 4, 3), IntArray(8 + 12, 13, 13), IntArray(-3, -2, -1)},
  177. {IntArray(11), IntArray(-7 + 1), IntArray(0)},
  178. {IntArray(12), IntArray(-12 + 1), IntArray(0)},
  179. {IntArray(8), IntArray(-16 + 1), IntArray(-3)},
  180. {IntArray(5), IntArray(-6 + 1), IntArray(1)},
  181. {IntArray(6), IntArray(-5 + 1), IntArray(1)},
  182. {IntArray(4), IntArray(-4 + 1), IntArray(-2)},
  183. {IntArray(5), IntArray(-5 + 1), IntArray(2)},
  184. {IntArray(6), IntArray(-4 + 1), IntArray(2)},
  185. {IntArray(4), IntArray(-6 + 1), IntArray(-1)},
  186. {IntArray(11, 5), IntArray(-7 + 1, -4 + 1), IntArray(0, 1)},
  187. {IntArray(12, 6), IntArray(-12 + 1, -6 + 1), IntArray(0, 1)},
  188. {IntArray(8, 4), IntArray(-16 + 1, -5 + 1), IntArray(-3, -2)},
  189. {IntArray(11, 5), IntArray(-12 + 1, -6 + 1), IntArray(0, 2)},
  190. {IntArray(12, 6), IntArray(-16 + 1, -5 + 1), IntArray(0, 2)},
  191. {IntArray(8, 4), IntArray(-7 + 1, -4 + 1), IntArray(-3, -1)},
  192. {IntArray(5, 2), IntArray(-5 + 1, -5 + 1), IntArray(1, 2)},
  193. {IntArray(6, 4), IntArray(-4 + 1, -4 + 1), IntArray(1, 2)},
  194. {IntArray(4, 3), IntArray(-6 + 1, -6 + 1), IntArray(-2, -1)},
  195. {IntArray(11, 5, 4), IntArray(-7 + 1, -5 + 1, -5 + 1), IntArray(0, 1, 2)},
  196. {IntArray(12, 6, 3), IntArray(-12 + 1, -6 + 1, -6 + 1), IntArray(0, 1, 2)},
  197. {IntArray(8, 4, 2), IntArray(-16 + 1, -4 + 1, -4 + 1), IntArray(-3, -2, -1)}
  198. };
  199. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  200. {
  201. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  202. if (ret)
  203. return ret;
  204. }
  205. return 0;
  206. }
  207. static int test_crop_4d(const ncnn::Mat& a)
  208. {
  209. std::vector<int> params[][3] = {
  210. {IntArray(11), IntArray(-233), IntArray(0)},
  211. {IntArray(8), IntArray(-233), IntArray(0)},
  212. {IntArray(6), IntArray(-233), IntArray(1)},
  213. {IntArray(5), IntArray(-233), IntArray(2)},
  214. {IntArray(4), IntArray(-233), IntArray(-2)},
  215. {IntArray(6), IntArray(-233), IntArray(3)},
  216. {IntArray(5), IntArray(-233), IntArray(-1)},
  217. {IntArray(8, 4), IntArray(-233, -233), IntArray(0, 1)},
  218. {IntArray(12, 6), IntArray(-233, -233), IntArray(0, 2)},
  219. {IntArray(11, 5), IntArray(-233, -233), IntArray(-4, -2)},
  220. {IntArray(4, 4), IntArray(-233, -233), IntArray(1, 2)},
  221. {IntArray(12, 6), IntArray(-233, -233), IntArray(0, 3)},
  222. {IntArray(5, 5), IntArray(-233, -233), IntArray(1, 3)},
  223. {IntArray(4, 4), IntArray(-233, -233), IntArray(2, 3)},
  224. {IntArray(12, 6, 6), IntArray(-233, -233, -233), IntArray(0, 1, 2)},
  225. {IntArray(11, 5, 5), IntArray(-233, -233, -233), IntArray(0, 1, 2)},
  226. {IntArray(8, 4, 4), IntArray(-233, -233, -233), IntArray(0, 1, 3)},
  227. {IntArray(12, 6, 6), IntArray(-233, -233, -233), IntArray(0, 2, 3)},
  228. {IntArray(11, 5, 5), IntArray(-233, -233, -233), IntArray(0, 2, 3)},
  229. {IntArray(4, 4, 4), IntArray(-233, -233, -233), IntArray(1, 2, 3)},
  230. {IntArray(6, 6, 6), IntArray(-233, -233, -233), IntArray(1, 2, 3)},
  231. {IntArray(11, 5, 5, 5), IntArray(-233, -233, -233, -233), IntArray(0, 1, 2, 3)},
  232. {IntArray(8, 4, 4, 4), IntArray(-233, -233, -233, -233), IntArray(0, 1, 2, 3)},
  233. {IntArray(12, 6, 6, 6), IntArray(-233, -233, -233, -233), IntArray(-4, -3, -2, -1)},
  234. {IntArray(11), IntArray(11 + 16), IntArray(0)},
  235. {IntArray(12), IntArray(12 + 7), IntArray(0)},
  236. {IntArray(8), IntArray(8 + 12), IntArray(-4)},
  237. {IntArray(5), IntArray(11), IntArray(1)},
  238. {IntArray(6), IntArray(13), IntArray(1)},
  239. {IntArray(4), IntArray(12), IntArray(-3)},
  240. {IntArray(3), IntArray(12), IntArray(2)},
  241. {IntArray(4), IntArray(13), IntArray(2)},
  242. {IntArray(5), IntArray(11), IntArray(-2)},
  243. {IntArray(1), IntArray(8), IntArray(3)},
  244. {IntArray(2), IntArray(7), IntArray(3)},
  245. {IntArray(3), IntArray(6), IntArray(-1)},
  246. {IntArray(11, 5), IntArray(11 + 7, 11), IntArray(0, 1)},
  247. {IntArray(12, 6), IntArray(12 + 12, 12), IntArray(0, 1)},
  248. {IntArray(8, 4), IntArray(8 + 16, 13), IntArray(-4, -3)},
  249. {IntArray(11, 4), IntArray(11 + 12, 13), IntArray(0, 2)},
  250. {IntArray(12, 3), IntArray(12 + 16, 11), IntArray(0, 2)},
  251. {IntArray(8, 2), IntArray(8 + 7, 12), IntArray(-4, -2)},
  252. {IntArray(11, 1), IntArray(11 + 16, 5), IntArray(0, 3)},
  253. {IntArray(12, 2), IntArray(12 + 7, 6), IntArray(0, 3)},
  254. {IntArray(8, 3), IntArray(8 + 12, 7), IntArray(-4, -1)},
  255. {IntArray(3, 3), IntArray(13, 4), IntArray(1, 2)},
  256. {IntArray(4, 2), IntArray(12, 3), IntArray(1, 2)},
  257. {IntArray(5, 1), IntArray(11, 2), IntArray(-3, -2)},
  258. {IntArray(5, 5), IntArray(11, 8), IntArray(1, 3)},
  259. {IntArray(4, 6), IntArray(12, 9), IntArray(1, 3)},
  260. {IntArray(3, 4), IntArray(13, 7), IntArray(-3, -1)},
  261. {IntArray(2, 3), IntArray(12, 9), IntArray(2, 3)},
  262. {IntArray(3, 2), IntArray(11, 7), IntArray(2, 3)},
  263. {IntArray(4, 1), IntArray(10, 8), IntArray(-2, -1)},
  264. {IntArray(11, 2, 2), IntArray(11 + 6, 9, 9), IntArray(0, 1, 2)},
  265. {IntArray(12, 3, 3), IntArray(12 + 1, 10, 10), IntArray(0, 1, 2)},
  266. {IntArray(8, 4, 4), IntArray(8 + 3, 11, 11), IntArray(-4, -3, -2)},
  267. {IntArray(11, 4, 4), IntArray(11 + 12, 12, 12), IntArray(0, 1, 3)},
  268. {IntArray(12, 5, 5), IntArray(12 + 8, 11, 11), IntArray(0, 1, 3)},
  269. {IntArray(8, 6, 6), IntArray(8 + 4, 13, 13), IntArray(-4, -3, -1)},
  270. {IntArray(11, 1, 4), IntArray(11 + 5, 12, 12), IntArray(0, 2, 3)},
  271. {IntArray(12, 3, 3), IntArray(12 + 3, 11, 11), IntArray(0, 2, 3)},
  272. {IntArray(8, 2, 5), IntArray(8 + 2, 10, 10), IntArray(-4, -2, -1)},
  273. {IntArray(1, 1, 1), IntArray(7, 7, 7), IntArray(1, 2, 3)},
  274. {IntArray(2, 2, 2), IntArray(8, 9, 10), IntArray(1, 2, 3)},
  275. {IntArray(3, 3, 3), IntArray(11, 12, 13), IntArray(-3, -2, -1)},
  276. {IntArray(11, 2, 3, 6), IntArray(11 + 11, 10, 12, 11), IntArray(0, 1, 2, 3)},
  277. {IntArray(12, 3, 4, 5), IntArray(12 + 12, 9, 11, 13), IntArray(0, 1, 2, 3)},
  278. {IntArray(8, 4, 5, 4), IntArray(8 + 8, 8, 10, 12), IntArray(-4, -3, -2, -1)},
  279. {IntArray(11), IntArray(-7 + 1), IntArray(0)},
  280. {IntArray(12), IntArray(-12 + 1), IntArray(0)},
  281. {IntArray(8), IntArray(-16 + 1), IntArray(-4)},
  282. {IntArray(5), IntArray(-6 + 1), IntArray(1)},
  283. {IntArray(6), IntArray(-5 + 1), IntArray(1)},
  284. {IntArray(4), IntArray(-4 + 1), IntArray(-3)},
  285. {IntArray(4), IntArray(-4 + 1), IntArray(2)},
  286. {IntArray(5), IntArray(-5 + 1), IntArray(2)},
  287. {IntArray(6), IntArray(-6 + 1), IntArray(-2)},
  288. {IntArray(1), IntArray(-5 + 1), IntArray(3)},
  289. {IntArray(2), IntArray(-4 + 1), IntArray(3)},
  290. {IntArray(3), IntArray(-3 + 1), IntArray(-1)},
  291. {IntArray(11, 3), IntArray(-7 + 1, -3 + 1), IntArray(0, 1)},
  292. {IntArray(12, 4), IntArray(-12 + 1, -4 + 1), IntArray(0, 1)},
  293. {IntArray(8, 5), IntArray(-16 + 1, -5 + 1), IntArray(-4, -3)},
  294. {IntArray(11, 1), IntArray(-12 + 1, -5 + 1), IntArray(0, 2)},
  295. {IntArray(12, 2), IntArray(-16 + 1, -4 + 1), IntArray(0, 2)},
  296. {IntArray(8, 3), IntArray(-7 + 1, -6 + 1), IntArray(-4, -2)},
  297. {IntArray(11, 3), IntArray(-12 + 1, -2 + 1), IntArray(0, 3)},
  298. {IntArray(12, 4), IntArray(-16 + 1, -3 + 1), IntArray(0, 3)},
  299. {IntArray(8, 5), IntArray(-7 + 1, -4 + 1), IntArray(-4, -1)},
  300. {IntArray(2, 3), IntArray(-4 + 1, -2 + 1), IntArray(1, 2)},
  301. {IntArray(3, 4), IntArray(-2 + 1, -3 + 1), IntArray(1, 2)},
  302. {IntArray(4, 5), IntArray(-3 + 1, -4 + 1), IntArray(-3, -2)},
  303. {IntArray(3, 2), IntArray(-2 + 1, -4 + 1), IntArray(1, 3)},
  304. {IntArray(4, 3), IntArray(-3 + 1, -2 + 1), IntArray(1, 3)},
  305. {IntArray(5, 4), IntArray(-4 + 1, -3 + 1), IntArray(-3, -1)},
  306. {IntArray(2, 3), IntArray(-4 + 1, -6 + 1), IntArray(2, 3)},
  307. {IntArray(1, 2), IntArray(-5 + 1, -5 + 1), IntArray(2, 3)},
  308. {IntArray(3, 1), IntArray(-6 + 1, -4 + 1), IntArray(-2, -1)},
  309. {IntArray(11, 3, 3), IntArray(-7 + 1, -3 + 1, -4 + 1), IntArray(0, 1, 2)},
  310. {IntArray(12, 4, 4), IntArray(-12 + 1, -4 + 1, -3 + 1), IntArray(0, 1, 2)},
  311. {IntArray(8, 5, 5), IntArray(-16 + 1, -5 + 1, -5 + 1), IntArray(-4, -3, -2)},
  312. {IntArray(11, 2, 2), IntArray(-7 + 1, -5 + 1, -4 + 1), IntArray(0, 1, 3)},
  313. {IntArray(12, 1, 1), IntArray(-12 + 1, -6 + 1, -5 + 1), IntArray(0, 1, 3)},
  314. {IntArray(8, 3, 3), IntArray(-16 + 1, -4 + 1, -6 + 1), IntArray(-4, -3, -1)},
  315. {IntArray(11, 2, 5), IntArray(-7 + 1, -2 + 1, -5 + 1), IntArray(0, 2, 3)},
  316. {IntArray(12, 3, 3), IntArray(-12 + 1, -3 + 1, -4 + 1), IntArray(0, 2, 3)},
  317. {IntArray(8, 4, 4), IntArray(-16 + 1, -4 + 1, -3 + 1), IntArray(-4, -2, -1)},
  318. {IntArray(1, 3, 3), IntArray(-3 + 1, -6 + 1, -4 + 1), IntArray(1, 2, 3)},
  319. {IntArray(2, 2, 2), IntArray(-4 + 1, -4 + 1, -5 + 1), IntArray(1, 2, 3)},
  320. {IntArray(3, 1, 1), IntArray(-5 + 1, -5 + 1, -6 + 1), IntArray(-3, -2, -1)},
  321. {IntArray(11, 3, 4, 4), IntArray(-7 + 1, -3 + 1, -2 + 1, -4 + 1), IntArray(0, 1, 2, 3)},
  322. {IntArray(12, 4, 5, 3), IntArray(-12 + 1, -4 + 1, -3 + 1, -5 + 1), IntArray(0, 1, 2, 3)},
  323. {IntArray(8, 5, 6, 2), IntArray(-16 + 1, -5 + 1, -4 + 1, -3 + 1), IntArray(-4, -3, -2, -1)}
  324. };
  325. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  326. {
  327. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  328. if (ret)
  329. return ret;
  330. }
  331. return 0;
  332. }
  333. int main()
  334. {
  335. SRAND(776757);
  336. return 0
  337. || test_crop_1d(RandomMat(112))
  338. || test_crop_1d(RandomMat(126))
  339. || test_crop_1d(RandomMat(127))
  340. || test_crop_2d(RandomMat(20, 48))
  341. || test_crop_2d(RandomMat(15, 36))
  342. || test_crop_2d(RandomMat(16, 33))
  343. || test_crop_3d(RandomMat(20, 20, 48))
  344. || test_crop_3d(RandomMat(15, 15, 36))
  345. || test_crop_3d(RandomMat(16, 16, 33))
  346. || test_crop_4d(RandomMat(20, 20, 20, 48))
  347. || test_crop_4d(RandomMat(15, 15, 15, 36))
  348. || test_crop_4d(RandomMat(16, 16, 16, 33));
  349. }