| 271 | } |
| 272 | |
| 273 | bool CaffeSingle::LoadGraph(te_caffe::NetParameter& caffe_net, StaticGraph* graph) |
| 274 | { |
| 275 | SetGraphIdentity(graph, "caffe", caffe_net.name(), "0"); |
| 276 | |
| 277 | name_map_t tensor_name_map; |
| 278 | |
| 279 | int layer_num = caffe_net.layer_size(); |
| 280 | int i; |
| 281 | |
| 282 | std::vector<std::string> no_supported_op; |
| 283 | for(i =0; i < layer_num; i++) |
| 284 | { |
| 285 | const te_caffe::LayerParameter& layer_param = caffe_net.layer(i); |
| 286 | const std::string& caffe_op_name = layer_param.type(); |
| 287 | |
| 288 | if(!FindOpLoadMethod(caffe_op_name)) |
| 289 | { |
| 290 | auto it = find(no_supported_op.begin(), no_supported_op.end(), caffe_op_name); |
| 291 | if(it == no_supported_op.end()) |
| 292 | no_supported_op.push_back(caffe_op_name); |
| 293 | } |
| 294 | } |
| 295 | if(no_supported_op.size() != 0) |
| 296 | { |
| 297 | LOG_ERROR() << "These "<< no_supported_op.size() << "ops are not supported:\n"; |
| 298 | LOG_ERROR() << "{"; |
| 299 | |
| 300 | for(int j = 0 ; j < static_cast<int> (no_supported_op.size()); j++) |
| 301 | { |
| 302 | LOG_ERROR() << no_supported_op[j] << ","; |
| 303 | } |
| 304 | LOG_ERROR() << "}\n"; |
| 305 | return false; |
| 306 | } |
| 307 | for(i = 0; i < layer_num; i++) |
| 308 | { |
| 309 | const te_caffe::LayerParameter& layer_param = caffe_net.layer(i); |
| 310 | const std::string& caffe_op_name = layer_param.type(); |
| 311 | |
| 312 | //if(!FindOpLoadMethod(caffe_op_name)) |
| 313 | //{ |
| 314 | // LOG_ERROR() << "cannot find load function for operator: " << caffe_op_name << "\n"; |
| 315 | // break; |
| 316 | // } |
| 317 | |
| 318 | StaticNode* node = CreateStaticNode(graph, layer_param.name()); |
| 319 | |
| 320 | if(!LoadNode(graph, node, layer_param, tensor_name_map)) |
| 321 | break; |
| 322 | |
| 323 | op_load_t op_func = any_cast<op_load_t>(GetOpLoadMethod(caffe_op_name)); |
| 324 | |
| 325 | if(!op_func(graph, node, layer_param)) |
| 326 | break; |
| 327 | } |
| 328 | |
| 329 | if(i < layer_num) |
| 330 | return false; |
nothing calls this directly
no test coverage detected