leap-model-parser 0.1.185.dev6__tar.gz → 0.1.185.dev8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/PKG-INFO +2 -2
  2. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/keras_json_model_import.py +2 -0
  3. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/leap_graph_editor.py +11 -1
  4. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/model_parser.py +20 -42
  5. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/pyproject.toml +2 -2
  6. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/LICENSE +0 -0
  7. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/README.md +0 -0
  8. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/__init__.py +0 -0
  9. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/contract/__init__.py +0 -0
  10. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/contract/graph.py +0 -0
  11. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/contract/importmodelresponse.py +0 -0
  12. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/contract/nodedata.py +0 -0
  13. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/contract/ui_components.json +0 -0
  14. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/__init__.py +0 -0
  15. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/layerpedia/__init__.py +0 -0
  16. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/layerpedia/layerpedia.py +0 -0
  17. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/tlinspection/__init__.py +0 -0
  18. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/tlinspection/leapinspection.py +0 -0
  19. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/uicomponents/__init__.py +0 -0
  20. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/uicomponents/generatenodedata.py +0 -0
  21. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/uicomponents/tensorflowinscpection.py +0 -0
  22. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/uicomponents/ui_components.json +0 -0
  23. {leap_model_parser-0.1.185.dev6 → leap_model_parser-0.1.185.dev8}/leap_model_parser/utils/uicomponents/ui_components_config.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leap-model-parser
3
- Version: 0.1.185.dev6
3
+ Version: 0.1.185.dev8
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/leap-model-parser
6
6
  License: MIT
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.8
13
13
  Classifier: Programming Language :: Python :: 3.9
14
14
  Classifier: Programming Language :: Python :: 3.10
15
- Requires-Dist: code-loader (==1.0.87.dev5)
15
+ Requires-Dist: code-loader (==1.0.87.dev7)
16
16
  Requires-Dist: keras-data-format-converter (==0.1.22)
17
17
  Requires-Dist: leap-model-rebuilder (==0.1.7)
18
18
  Requires-Dist: numpy (>=1.22.3,<2.0.0)
@@ -349,6 +349,8 @@ def _add_origin_name_to_nodes(nodes: Dict[str, Node]):
349
349
  if "name" in node.data:
350
350
  node.data["origin_name"] = node.data["name"]
351
351
  node.data.pop("name")
352
+ elif "output_name" in node.data:
353
+ node.data["origin_name"] = node.data["output_name"]
352
354
 
353
355
 
354
356
  def _is_input_node(node: Node) -> bool:
@@ -310,7 +310,17 @@ class LeapGraphEditor:
310
310
  if input_node.type in (NodeMappingType.Input, NodeMappingType.GroundTruth):
311
311
  input_node_id = self._find_encoder_node_id(input_node.name)
312
312
  if input_node_id is None:
313
- input_node_id = self._add_ground_truth_node(input_node.name)
313
+ if input_node.type == NodeMappingType.GroundTruth:
314
+ input_node_id = self._add_ground_truth_node(input_node.name)
315
+ else:
316
+ raise Exception(f'Couldnt find input node name {input_node.name}')
317
+ elif 'Input' in input_node.type.value:
318
+ input_index = int(input_node.type.value.replace('Input', ''))
319
+ origin_name = self.keras_model.inputs[input_index].node.layer.name
320
+ input_node_id = self._find_input_node_by_origin_name(origin_name)
321
+ self.model_graph[input_node_id].data['output_name'] = input_node.name
322
+ if input_node_id is None:
323
+ raise Exception(f"Couldn't find input node by origin name {origin_name}")
314
324
  elif input_node.type.value.startswith('Prediction'):
315
325
  input_node_id = self._find_node_by_origin_name(input_node.name).id
316
326
  else:
@@ -60,48 +60,26 @@ class ModelParser:
60
60
  f"Unable to import external version, {str(model_path)} file format isn't supported")
61
61
 
62
62
  file_path = str(model_path)
63
- try:
64
- model_schema, keras_model_with_weights, error_info = model_to_keras_converter(file_path)
65
- model_generator = KerasJsonModelImport(self.custom_layers)
66
-
67
- keras_model = keras_model_with_weights
68
- if keras_model is None:
69
- keras_model = tf.keras.models.model_from_json(json.dumps(model_schema))
70
- layer_name_to_inbound_nodes = {
71
- layer.name: layer.inbound_nodes
72
- for layer in keras_model.layers
73
- }
74
-
75
- graph, connected_inputs = model_generator.generate_graph(
76
- model_schema, layer_name_to_inbound_nodes)
77
-
78
- if self.mapping_connections is not None:
79
- leap_graph_editor = LeapGraphEditor(graph, keras_model_with_weights)
80
- leap_graph_editor.add_connections_to_graph(self.mapping_connections)
81
-
82
- return graph, connected_inputs, keras_model_with_weights, error_info
83
- except Exception as e:
84
- if model_type.value in [ImportModelTypeEnum.H5_TF2.value, ImportModelTypeEnum.PB_TF2.value]:
85
- if model_type.value == ImportModelTypeEnum.H5_TF2.value:
86
- keras_model = self._load_keras_model_with_custom_layers(
87
- file_path)
88
- else:
89
- keras_model = self._get_k_model_from_pb_path(file_path)
90
-
91
- rebuilt_model = rebuild_model(keras_model)
92
- model_schema, keras_model, error_info = self.convert_to_keras_model(
93
- rebuilt_model)
94
-
95
- layer_name_to_inbound_nodes = {
96
- layer.name: layer.inbound_nodes
97
- for layer in keras_model.layers
98
- }
99
- model_generator = KerasJsonModelImport(self.custom_layers)
100
- graph, connected_inputs = model_generator.generate_graph(
101
- model_schema, layer_name_to_inbound_nodes)
102
- return graph, connected_inputs, keras_model, error_info
103
- else:
104
- raise e
63
+ model_schema, keras_model_with_weights, error_info = model_to_keras_converter(file_path)
64
+ model_generator = KerasJsonModelImport(self.custom_layers)
65
+
66
+ keras_model = keras_model_with_weights
67
+ if keras_model is None:
68
+ keras_model = tf.keras.models.model_from_json(json.dumps(model_schema))
69
+ layer_name_to_inbound_nodes = {
70
+ layer.name: layer.inbound_nodes
71
+ for layer in keras_model.layers
72
+ }
73
+
74
+ graph, connected_inputs = model_generator.generate_graph(
75
+ model_schema, layer_name_to_inbound_nodes)
76
+
77
+ if self.mapping_connections is not None:
78
+ leap_graph_editor = LeapGraphEditor(graph, keras_model_with_weights)
79
+ leap_graph_editor.add_connections_to_graph(self.mapping_connections)
80
+
81
+ return graph, connected_inputs, keras_model_with_weights, error_info
82
+
105
83
 
106
84
  def _get_k_model_from_pb_path(self, file_path: str):
107
85
  tar_file = tarfile.open(file_path)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "leap-model-parser"
3
- version = "0.1.185.dev6"
3
+ version = "0.1.185.dev8"
4
4
  description = ""
5
5
  authors = ["idan <idan.yogev@tensorleap.ai>"]
6
6
  license = "MIT"
@@ -22,7 +22,7 @@ onnx2kerastl = "0.0.174"
22
22
  keras-data-format-converter = "0.1.22"
23
23
  leap-model-rebuilder = "0.1.7"
24
24
  tensorflow-io-gcs-filesystem = "0.34.0"
25
- code-loader = "1.0.87.dev5"
25
+ code-loader = "1.0.87.dev7"
26
26
 
27
27
  [tool.poetry.dev-dependencies]
28
28
  pytest = "^7.1.1"