44
55using namespace it_lab_ai ;
66
7- bool LayerFactory::onednn_ = false ;
8-
97std::unordered_map<std::string, std::string> model_paths = {
108 {" alexnet_mnist" , MODEL_PATH_H5 },
119 {" googlenet" , MODEL_PATH_GOOGLENET_ONNX },
@@ -14,7 +12,8 @@ std::unordered_map<std::string, std::string> model_paths = {
1412 {" yolo" , MODEL_PATH_YOLO11NET_ONNX }};
1513
1614void build_graph_linear (it_lab_ai::Graph& graph, it_lab_ai::Tensor& input,
17- it_lab_ai::Tensor& output, bool comments) {
15+ it_lab_ai::Tensor& output, RuntimeOptions options,
16+ bool comments) {
1817 if (comments) {
1918 for (size_t i = 0 ; i < input.get_shape ().dims (); i++) {
2019 std::cout << input.get_shape ()[i] << ' ' ;
@@ -83,14 +82,14 @@ void build_graph_linear(it_lab_ai::Graph& graph, it_lab_ai::Tensor& input,
8382 it_lab_ai::Tensor tmp_values = tensor;
8483 it_lab_ai::Tensor tmp_bias = it_lab_ai::make_tensor (tensor.get_bias ());
8584 auto conv_layer = std::make_unique<it_lab_ai::ConvolutionalLayer>(
86- 1 , pads, 1 , tmp_values, tmp_bias, kDefault , 1 , true );
85+ 1 , pads, 1 , tmp_values, tmp_bias, 1 , true );
8786 layer_ptrs.push_back (conv_layer.get ());
8887 layers.push_back (std::move (conv_layer));
8988 layerpostop.push_back (false );
9089 if (comments) std::cout << " ConvLayer added to layers." << ' \n ' ;
9190 }
9291 if (layer_type.find (" relu" ) != std::string::npos) {
93- auto ew_layer = LayerFactory::createEwLayer (" relu" );
92+ auto ew_layer = LayerFactory::createEwLayer (" relu" , options );
9493 layer_ptrs.push_back (ew_layer.get ());
9594 layers.push_back (std::move (ew_layer));
9695 layerpostop.push_back (true );
@@ -120,7 +119,7 @@ void build_graph_linear(it_lab_ai::Graph& graph, it_lab_ai::Tensor& input,
120119 << ' \n ' ;
121120 }
122121 auto pool_layer =
123- std::make_unique<it_lab_ai::PoolingLayer>(shape, pooltype, kDefault );
122+ std::make_unique<it_lab_ai::PoolingLayer>(shape, pooltype);
124123 layer_ptrs.push_back (pool_layer.get ());
125124 layers.push_back (std::move (pool_layer));
126125 layerpostop.push_back (false );
@@ -195,8 +194,8 @@ std::string get_base_layer_name(const std::string& tensor_name) {
195194
196195void build_graph (it_lab_ai::Graph& graph, it_lab_ai::Tensor& input,
197196 it_lab_ai::Tensor& output, const std::string& json_path,
198- bool comments) {
199- auto parse_result = parse_json_model (json_path, comments);
197+ RuntimeOptions options, bool comments) {
198+ auto parse_result = parse_json_model (options, json_path, comments);
200199
201200 auto & layers = parse_result.layers ;
202201 auto & name_to_layer_ptr = parse_result.name_to_layer_ptr ;
@@ -300,7 +299,8 @@ void build_graph(it_lab_ai::Graph& graph, it_lab_ai::Tensor& input,
300299 }
301300}
302301
303- ParseResult parse_json_model (const std::string& json_path, bool comments) {
302+ ParseResult parse_json_model (RuntimeOptions options,
303+ const std::string& json_path, bool comments) {
304304 ParseResult result;
305305
306306 auto & layers = result.layers ;
@@ -411,13 +411,13 @@ ParseResult parse_json_model(const std::string& json_path, bool comments) {
411411 it_lab_ai::Tensor tmp_bias = it_lab_ai::make_tensor (tensor.get_bias ());
412412
413413 auto conv_layer = std::make_unique<it_lab_ai::ConvolutionalLayer>(
414- stride, pads, dilations, tmp_tensor, tmp_bias, kDefault , group);
414+ stride, pads, dilations, tmp_tensor, tmp_bias, group);
415415 layer = std::move (conv_layer);
416416 } else if (layer_type.find (" Relu" ) != std::string::npos ||
417417 layer_type.find (" relu" ) != std::string::npos) {
418- layer = LayerFactory::createEwLayer (" relu" );
418+ layer = LayerFactory::createEwLayer (" relu" , options );
419419 } else if (layer_type.find (" Sigmoid" ) != std::string::npos) {
420- layer = LayerFactory::createEwLayer (" sigmoid" );
420+ layer = LayerFactory::createEwLayer (" sigmoid" , options );
421421 } else if (layer_type.find (" Dense" ) != std::string::npos ||
422422 layer_type.find (" FullyConnected" ) != std::string::npos) {
423423 it_lab_ai::Tensor tensor = it_lab_ai::create_tensor_from_json (
@@ -448,7 +448,7 @@ ParseResult parse_json_model(const std::string& json_path, bool comments) {
448448 }
449449 } else if (layer_type == " GlobalAveragePool" ) {
450450 auto pool_layer = std::make_unique<it_lab_ai::PoolingLayer>(
451- it_lab_ai::Shape ({0 , 0 }), " average" , kDefault );
451+ it_lab_ai::Shape ({0 , 0 }), " average" );
452452 layer = std::move (pool_layer);
453453 if (comments) {
454454 std::cout << " GlobalAveragePool layer added (will use input spatial "
@@ -509,8 +509,8 @@ ParseResult parse_json_model(const std::string& json_path, bool comments) {
509509 }
510510 }
511511
512- auto pool_layer = std::make_unique<it_lab_ai::PoolingLayer>(
513- shape, pooltype, kDefault );
512+ auto pool_layer =
513+ std::make_unique<it_lab_ai::PoolingLayer>( shape, pooltype);
514514
515515 try {
516516 if (strides[0 ] != 2 || strides[1 ] != 2 ) {
@@ -637,13 +637,16 @@ ParseResult parse_json_model(const std::string& json_path, bool comments) {
637637
638638 if (layer_type == " Mul" ) {
639639 ew_operation = " linear" ;
640- layer = LayerFactory::createEwLayer (ew_operation, value, 0 .0F );
640+ layer =
641+ LayerFactory::createEwLayer (ew_operation, options, value, 0 .0F );
641642 } else if (layer_type == " Add" ) {
642643 ew_operation = " linear" ;
643- layer = LayerFactory::createEwLayer (ew_operation, 1 .0F , value);
644+ layer =
645+ LayerFactory::createEwLayer (ew_operation, options, 1 .0F , value);
644646 } else if (layer_type == " Sub" ) {
645647 ew_operation = " linear" ;
646- layer = LayerFactory::createEwLayer (ew_operation, 1 .0F , -value);
648+ layer = LayerFactory::createEwLayer (ew_operation, options, 1 .0F ,
649+ -value);
647650 } else {
648651 continue ;
649652 }
0 commit comments