| 107 | } |
| 108 | |
| 109 | TinyNNStatus parse_tensor( |
| 110 | Tensor* tensor, ns(Tensor_table_t) fbs_tensor, int tensor_id) { |
| 111 | //! dtype |
| 112 | ns(DType_table_t) fbs_dtype = ns(Tensor_dtype(fbs_tensor)); |
| 113 | tensor->dtype.type_enum = dtype_from_fbs(ns(DType_type(fbs_dtype))); |
| 114 | tensor->dtype.param = dtype_param_from_fbs(fbs_dtype); |
| 115 | |
| 116 | //! name |
| 117 | const char* name = ns(Tensor_name(fbs_tensor)); |
| 118 | if (strlen(name) > 0) { |
| 119 | tensor->name = get_string(name); |
| 120 | } else { |
| 121 | char name[20] = "tensor:"; |
| 122 | sprintf(name, "tensor:%d", tensor_id); |
| 123 | tensor->name = get_string(name); |
| 124 | } |
| 125 | //! use_count |
| 126 | tensor->use_count = ns(Tensor_use_count(fbs_tensor)); |
| 127 | tensor->is_dynamic = ns(Tensor_dynamic(fbs_tensor)); |
| 128 | //! offset |
| 129 | tensor->offset = ns(Tensor_offset(fbs_tensor)); |
| 130 | LOG_DEBUG( |
| 131 | "Tensor info: name=%s, use_count=%d, offset=%zu, is_dynamic=%d\n", |
| 132 | tensor->name, tensor->use_count, tensor->offset, tensor->is_dynamic); |
| 133 | //! layout |
| 134 | ns(Layout_table_t) fbs_layout = ns(Tensor_layout(fbs_tensor)); |
| 135 | flatbuffers_int32_vec_t fbs_dims = ns(Layout_dims(fbs_layout)); |
| 136 | flatbuffers_int32_vec_t fbs_stride = ns(Layout_stride(fbs_layout)); |
| 137 | tensor->layout.nr_dim = flatbuffers_int32_vec_len(fbs_dims); |
| 138 | LOG_DEBUG("Tensor layout: ["); |
| 139 | for (int i = 0; i < tensor->layout.nr_dim; i++) { |
| 140 | tensor->layout.dims[i] = flatbuffers_int32_vec_at(fbs_dims, i); |
| 141 | LOG_DEBUG_NO_PREFIX("%d,", tensor->layout.dims[i]); |
| 142 | tensor->layout.stride[i] = flatbuffers_int32_vec_at(fbs_stride, i); |
| 143 | } |
| 144 | //! format |
| 145 | tensor->layout.format = format_from_fbs(ns(Layout_format(fbs_layout))); |
| 146 | LOG_DEBUG_NO_PREFIX( |
| 147 | "], format=%s, Dtype=%s\n", format2string(tensor->layout.format), |
| 148 | dtype2string(tensor->dtype.type_enum)); |
| 149 | |
| 150 | tensor->is_weight = 0; |
| 151 | |
| 152 | tensor->size = tensor_length_in_byte(tensor); |
| 153 | return TinyNN_SUCCESS; |
| 154 | } |
| 155 | |
| 156 | TinyNNStatus parse_weight( |
| 157 | Tensor* weight, ns(Weight_table_t) fbs_weight, Device* host_dev) { |
no test coverage detected