def build_graph_from_json(ir_model_json): """build model from json representation """ graph = json_to_graph(ir_model_json) logging.debug(graph.operation_history) model = graph.produce_keras_model() return model
def test_graph_json_transform(self): """ unittest for graph_json_transform function """ graph_init = CnnGenerator(10, (32, 32, 3)).generate() graph_init = to_wider_graph(deepcopy(graph_init)) graph_init = to_deeper_graph(deepcopy(graph_init)) graph_init = to_skip_connection_graph(deepcopy(graph_init)) json_out = graph_to_json(graph_init, "temp.json") graph_recover = json_to_graph(json_out) # compare all data in graph self.assertEqual(graph_init.input_shape, graph_recover.input_shape) self.assertEqual(graph_init.weighted, graph_recover.weighted) self.assertEqual( graph_init.layer_id_to_input_node_ids, graph_recover.layer_id_to_input_node_ids, ) self.assertEqual(graph_init.adj_list, graph_recover.adj_list) self.assertEqual(graph_init.reverse_adj_list, graph_recover.reverse_adj_list) self.assertEqual(len(graph_init.operation_history), len(graph_recover.operation_history)) self.assertEqual(graph_init.n_dim, graph_recover.n_dim) self.assertEqual(graph_init.conv, graph_recover.conv) self.assertEqual(graph_init.batch_norm, graph_recover.batch_norm) self.assertEqual(graph_init.vis, graph_recover.vis) node_list_init = [node.shape for node in graph_init.node_list] node_list_recover = [node.shape for node in graph_recover.node_list] self.assertEqual(node_list_init, node_list_recover) self.assertEqual(len(graph_init.node_to_id), len(graph_recover.node_to_id)) layer_list_init = [ layer_description_extractor(item, graph_init.node_to_id) for item in graph_init.layer_list ] layer_list_recover = [ layer_description_extractor(item, graph_recover.node_to_id) for item in graph_recover.layer_list ] self.assertEqual(layer_list_init, layer_list_recover) node_to_id_init = [ graph_init.node_to_id[node] for node in graph_init.node_list ] node_to_id_recover = [ graph_recover.node_to_id[node] for node in graph_recover.node_list ] self.assertEqual(node_to_id_init, node_to_id_recover) layer_to_id_init = [ graph_init.layer_to_id[layer] for layer in graph_init.layer_list ] layer_to_id_recover = [ graph_recover.layer_to_id[layer] for layer in graph_recover.layer_list ] self.assertEqual(layer_to_id_init, layer_to_id_recover)
def test_to_deeper_graph(self): """ unittest for to_deeper_graph function """ graph_init = CnnGenerator(10, (32, 32, 3)).generate() json_out = graph_to_json(graph_init, "temp.json") graph_recover = json_to_graph(json_out) deeper_graph = to_deeper_graph(deepcopy(graph_recover)) model = deeper_graph.produce_torch_model() out = model(torch.ones(1, 3, 32, 32)) self.assertEqual(out.shape, torch.Size([1, 10]))