| 21 | } |
| 22 | |
| 23 | int create_conv_node(graph_t graph, const char* node_name, const char* input_name, int k_size, int stride, int pad, |
| 24 | int in_c, int out_c, int group) |
| 25 | { |
| 26 | node_t conv_node = create_graph_node(graph, node_name, "Convolution"); |
| 27 | |
| 28 | tensor_t input_tensor = get_graph_tensor(graph, input_name); |
| 29 | |
| 30 | if(input_tensor == nullptr) |
| 31 | { |
| 32 | std::cout << "ERRNO: " << get_tengine_errno() << "\n"; |
| 33 | return -1; |
| 34 | } |
| 35 | |
| 36 | set_node_input_tensor(conv_node, 0, input_tensor); |
| 37 | |
| 38 | release_graph_tensor(input_tensor); |
| 39 | |
| 40 | /* output */ |
| 41 | tensor_t output_tensor = create_graph_tensor(graph, node_name, TENGINE_DT_FP32); |
| 42 | set_node_output_tensor(conv_node, 0, output_tensor, TENSOR_TYPE_VAR); |
| 43 | |
| 44 | release_graph_tensor(output_tensor); |
| 45 | |
| 46 | /* weight */ |
| 47 | |
| 48 | std::string weight_name(node_name); |
| 49 | weight_name += "/weight"; |
| 50 | |
| 51 | node_t w_node = create_graph_node(graph, weight_name.c_str(), "Const"); |
| 52 | tensor_t w_tensor = create_graph_tensor(graph, weight_name.c_str(), TENGINE_DT_FP32); |
| 53 | set_node_output_tensor(w_node, 0, w_tensor, TENSOR_TYPE_CONST); |
| 54 | |
| 55 | set_node_input_tensor(conv_node, 1, w_tensor); |
| 56 | int w_dims[] = {out_c, in_c, k_size, k_size}; |
| 57 | |
| 58 | set_tensor_shape(w_tensor, w_dims, 4); |
| 59 | |
| 60 | release_graph_node(w_node); |
| 61 | release_graph_tensor(w_tensor); |
| 62 | |
| 63 | /* bias */ |
| 64 | std::string bias_name(node_name); |
| 65 | bias_name += "/bias"; |
| 66 | |
| 67 | node_t b_node = create_graph_node(graph, bias_name.c_str(), "Const"); |
| 68 | tensor_t b_tensor = create_graph_tensor(graph, bias_name.c_str(), TENGINE_DT_FP32); |
| 69 | set_node_output_tensor(b_node, 0, b_tensor, TENSOR_TYPE_CONST); |
| 70 | |
| 71 | int b_dims[] = {64}; |
| 72 | |
| 73 | set_tensor_shape(b_tensor, b_dims, 1); |
| 74 | |
| 75 | set_node_input_tensor(conv_node, 2, b_tensor); |
| 76 | release_graph_node(b_node); |
| 77 | release_graph_tensor(b_tensor); |
| 78 | |
| 79 | /* attr */ |
| 80 | set_node_attr_int(conv_node, "kernel_h", &k_size); |
no test coverage detected