leap-model-parser 0.1.225__tar.gz → 0.1.225.dev2__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.225 → leap_model_parser-0.1.225.dev2}/PKG-INFO +1 -1
  2. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/contract/graph.py +1 -1
  3. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/keras_json_model_import.py +1 -1
  4. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/model_parser.py +8 -20
  5. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/pyproject.toml +1 -1
  6. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/LICENSE +0 -0
  7. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/README.md +0 -0
  8. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/__init__.py +0 -0
  9. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/contract/__init__.py +0 -0
  10. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/contract/importmodelresponse.py +0 -0
  11. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/contract/nodedata.py +0 -0
  12. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/contract/ui_components.json +0 -0
  13. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/leap_graph_editor.py +0 -0
  14. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/__init__.py +0 -0
  15. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/layerpedia/__init__.py +0 -0
  16. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/layerpedia/layerpedia.py +0 -0
  17. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/tlinspection/__init__.py +0 -0
  18. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/tlinspection/leapinspection.py +0 -0
  19. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/uicomponents/__init__.py +0 -0
  20. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/uicomponents/generatenodedata.py +0 -0
  21. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/uicomponents/tensorflowinscpection.py +0 -0
  22. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/leap_model_parser/utils/uicomponents/ui_components.json +0 -0
  23. {leap_model_parser-0.1.225 → leap_model_parser-0.1.225.dev2}/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.225
3
+ Version: 0.1.225.dev2
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/leap-model-parser
6
6
  License: MIT
@@ -47,7 +47,7 @@ class Node:
47
47
  outputs: Dict[str, ConnectionOutput] = field(default_factory=dict)
48
48
  pruning_plan_id: Optional[str] = None
49
49
  wrapper: Optional[WrapperData] = None
50
- shape: Optional[List[str]] = None
50
+ shape: Optional[List[Optional[str]]] = None
51
51
 
52
52
  def __key(self):
53
53
  return (self.id, self.name)
@@ -205,7 +205,7 @@ class KerasJsonModelImport:
205
205
  'serialized_call_kwargs': serialized_call_kwargs})
206
206
 
207
207
  def generate_regular_node(self, layer: Dict[str, Any], layer_metadata: Dict[str, Any], node_key: str,
208
- layer_name_to_inbound_nodes: Dict[str, List[keras_node]]):
208
+ layer_name_to_inbound_nodes: Dict[str, List[Node]]):
209
209
  data = layer['config']
210
210
  if layer['class_name'] in ('TFOpLambda', 'SlicingOpLambda') or layer['class_name'] in self.custom_layers:
211
211
  call_args = layer_name_to_inbound_nodes[layer['config']
@@ -7,6 +7,7 @@ import tempfile
7
7
  from importlib.util import find_spec
8
8
  from pathlib import Path
9
9
 
10
+
10
11
  import tensorflow as tf # type: ignore
11
12
  from code_loader.contract.mapping import NodeConnection, NodeMapping # type: ignore
12
13
  from keras import Model # type: ignore
@@ -33,7 +34,6 @@ if spec is not None:
33
34
 
34
35
  onnx_imported = True
35
36
 
36
-
37
37
  class ModelParser:
38
38
  def __init__(self, should_transform_inputs_and_outputs=False,
39
39
  custom_layers=None,
@@ -54,14 +54,12 @@ class ModelParser:
54
54
  ImportModelTypeEnum.PB_TF2.value: self.convert_pb_model,
55
55
  }
56
56
 
57
- @staticmethod
58
- def _add_output_node_shape_to_model_schema(model_schema: Dict, keras_model: Model):
57
+ def _add_output_node_shape_to_model_schema(self, model_schema: Dict, keras_model: Model):
59
58
  for i, layer in enumerate(keras_model.layers):
60
59
  model_schema['config']['layers'][i]['output_shape'] = list(layer.output_shape)
61
60
 
62
61
  def get_keras_model_and_model_graph(
63
- self, model_path: Path, model_type: ImportModelTypeEnum) -> Tuple[
64
- Dict[str, Node], List[InputInfo], Optional[Model], Optional[str]]:
62
+ self, model_path: Path, model_type: ImportModelTypeEnum) -> Tuple[Dict[str, Node], List[InputInfo], Optional[Model], Optional[str]]:
65
63
  model_to_keras_converter: Optional[Callable[[str], Tuple[Dict[str, Node], Model, Optional[str]]]] = \
66
64
  self._model_types_converter.get(model_type.value)
67
65
  if model_to_keras_converter is None:
@@ -92,6 +90,7 @@ class ModelParser:
92
90
 
93
91
  return graph, connected_inputs, keras_model_with_weights, error_info
94
92
 
93
+
95
94
  def _get_k_model_from_pb_path(self, file_path: str):
96
95
  tar_file = tarfile.open(file_path)
97
96
  with tempfile.TemporaryDirectory() as temp_dir:
@@ -106,8 +105,7 @@ class ModelParser:
106
105
  k_model = self._load_keras_model_with_custom_layers(pb_folder_path)
107
106
  return k_model
108
107
 
109
- def generate_model_graph(self, model_path: Path, model_type: ImportModelTypeEnum) -> Tuple[
110
- Dict[str, Node], List[InputInfo]]:
108
+ def generate_model_graph(self, model_path: Path, model_type: ImportModelTypeEnum) -> Tuple[Dict[str, Node], List[InputInfo]]:
111
109
  model_graph, connected_inputs, _, error_info = self.get_keras_model_and_model_graph(
112
110
  model_path, model_type)
113
111
  return model_graph, connected_inputs
@@ -132,30 +130,20 @@ class ModelParser:
132
130
  node.name for node in onnx_model.graph.initializer]
133
131
  input_names = list(set(input_all) - set(input_initializer))
134
132
  converted_response: ConvertedResponse = onnx_to_keras(onnx_model, input_names=input_names,
135
- name_policy='attach_weights_name',
136
- allow_partial_compilation=False)
133
+ name_policy='attach_weights_name', allow_partial_compilation=False)
137
134
  return self.convert_to_keras_model(converted_response.converted_model, converted_response.error_info)
138
135
 
139
136
  def _load_keras_model_with_custom_layers(self, file_path: str):
140
137
  custom_objects = {}
141
138
  if self.custom_layers is not None:
142
139
  custom_objects = self.custom_layers
143
-
144
- try:
145
- return load_model(file_path, custom_objects=custom_objects, compile=False)
146
- except OSError as e:
147
- if 'signature' in str(e):
148
- raise Exception('Unable to open model file. The model might be corrupted or not a valid.')
149
- else:
150
- raise e
151
-
140
+ return load_model(file_path, custom_objects=custom_objects, compile=False)
152
141
 
153
142
  def convert_h5_model(self, file_path: str) -> Tuple[Dict[str, Node], Model, Optional[str]]:
154
143
  imported_model = self._load_keras_model_with_custom_layers(file_path)
155
144
  return self.convert_to_keras_model(imported_model)
156
145
 
157
- def convert_to_keras_model(self, k_model, error_info: Optional[str] = None) -> Tuple[
158
- Dict[str, Node], Model, Optional[str]]:
146
+ def convert_to_keras_model(self, k_model, error_info: Optional[str] = None) -> Tuple[Dict[str, Node], Model, Optional[str]]:
159
147
  converted_k_model = convert_channels_first_to_last(
160
148
  k_model, self._should_transform_inputs_and_outputs, self.custom_layers)
161
149
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "leap-model-parser"
3
- version = "0.1.225"
3
+ version = "0.1.225.dev2"
4
4
  description = ""
5
5
  authors = ["idan <idan.yogev@tensorleap.ai>"]
6
6
  license = "MIT"