|
|
@@ -1266,6 +1266,36 @@ struct test_pool2d : public test_case {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+// GGML_OP_CONV_TRANSPOSE_1D
|
|
|
+struct test_conv_transpose_1d : public test_case {
|
|
|
+
|
|
|
+ const std::array<int64_t, 4> ne_input;
|
|
|
+ const std::array<int64_t, 4> ne_kernel;
|
|
|
+
|
|
|
+ // stride
|
|
|
+ const int s0;
|
|
|
+ // padding
|
|
|
+ const int p0;
|
|
|
+ // dilation
|
|
|
+ const int d0;
|
|
|
+
|
|
|
+ std::string vars() override {
|
|
|
+ return VARS_TO_STR5(ne_input, ne_kernel, s0, p0, d0);
|
|
|
+ }
|
|
|
+
|
|
|
+ test_conv_transpose_1d(std::array<int64_t, 4> ne_input = {197, 32, 1, 1}, // [input_width, input_height, input_channels, 1]
|
|
|
+ std::array<int64_t, 4> ne_kernel = {16, 32, 32, 1}, // [kernel_width, kernel_height, input_channels, 1]
|
|
|
+ int s0 = 1, int p0 = 0, int d0 = 1)
|
|
|
+ : ne_input(ne_input), ne_kernel(ne_kernel), s0(s0), p0(p0), d0(d0) {}
|
|
|
+
|
|
|
+ ggml_tensor * build_graph(ggml_context * ctx) override {
|
|
|
+ ggml_tensor * input = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne_input.data());
|
|
|
+ ggml_tensor * kernel = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne_kernel.data());
|
|
|
+ ggml_tensor * out = ggml_conv_transpose_1d(ctx, kernel, input, s0, p0, d0);
|
|
|
+ return out;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
// GGML_OP_IM2COL
|
|
|
struct test_im2col : public test_case {
|
|
|
const ggml_type type_input;
|
|
|
@@ -1279,7 +1309,7 @@ struct test_im2col : public test_case {
|
|
|
// padding
|
|
|
const int p0;
|
|
|
const int p1;
|
|
|
- // dilatation
|
|
|
+ // dilation
|
|
|
const int d0;
|
|
|
const int d1;
|
|
|
// mode
|
|
|
@@ -2098,6 +2128,16 @@ static bool test_backend(ggml_backend_t backend, test_mode mode, const char * op
|
|
|
test_cases.emplace_back(new test_im2col(GGML_TYPE_F32, GGML_TYPE_F16, GGML_TYPE_F32));
|
|
|
test_cases.emplace_back(new test_im2col(GGML_TYPE_F32, GGML_TYPE_F16, GGML_TYPE_F16));
|
|
|
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d());
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({3,2,1,1}, {2,3,2,1}, 3, 0, 1));
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({3,2,1,1}, {2,3,2,1}, 2, 0, 1));
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({3,2,1,1}, {2,3,2,1}, 1, 0, 1));
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({3,2,1,1}, {3,2,2,1}, 2, 0, 1));
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({3,2,1,1}, {3,2,2,1}, 1, 0, 1));
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({3,2,1,1}, {3,1,2,1}, 1, 0, 1));
|
|
|
+ test_cases.emplace_back(new test_conv_transpose_1d({2,1,1,1}, {3,1,1,1}, 1, 0, 1));
|
|
|
+
|
|
|
+
|
|
|
test_cases.emplace_back(new test_repeat(GGML_TYPE_F32, {10, 10, 10, 10}, {1, 1, 1, 1}));
|
|
|
test_cases.emplace_back(new test_repeat(GGML_TYPE_F32, {10, 10, 10, 10}, {2, 1, 1, 1}));
|
|
|
test_cases.emplace_back(new test_repeat(GGML_TYPE_F32, {10, 10, 10, 10}, {1, 2, 1, 1}));
|