leap-model-parser 0.1.223__py3-none-any.whl → 0.1.225.dev1__py3-none-any.whl
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.
- leap_model_parser/contract/graph.py +1 -0
- leap_model_parser/keras_json_model_import.py +1 -2
- leap_model_parser/leap_graph_editor.py +3 -2
- leap_model_parser/model_parser.py +7 -0
- {leap_model_parser-0.1.223.dist-info → leap_model_parser-0.1.225.dev1.dist-info}/METADATA +1 -1
- {leap_model_parser-0.1.223.dist-info → leap_model_parser-0.1.225.dev1.dist-info}/RECORD +9 -9
- {leap_model_parser-0.1.223.dist-info → leap_model_parser-0.1.225.dev1.dist-info}/LICENSE +0 -0
- {leap_model_parser-0.1.223.dist-info → leap_model_parser-0.1.225.dev1.dist-info}/WHEEL +0 -0
- {leap_model_parser-0.1.223.dist-info → leap_model_parser-0.1.225.dev1.dist-info}/entry_points.txt +0 -0
|
@@ -47,6 +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[Optional[int]]] = None
|
|
50
51
|
|
|
51
52
|
def __key(self):
|
|
52
53
|
return (self.id, self.name)
|
|
@@ -5,7 +5,6 @@ from typing import Set, Dict, Any, List, Type, Optional, Tuple
|
|
|
5
5
|
|
|
6
6
|
import tensorflow as tf # type: ignore
|
|
7
7
|
from keras.engine.keras_tensor import KerasTensor # type: ignore
|
|
8
|
-
from keras.engine.node import Node # type: ignore
|
|
9
8
|
from keras.engine.node import Node as keras_node # type: ignore
|
|
10
9
|
from keras.layers import Layer # type: ignore
|
|
11
10
|
from keras.layers.convolutional.base_conv import Conv # type: ignore
|
|
@@ -221,7 +220,7 @@ class KerasJsonModelImport:
|
|
|
221
220
|
|
|
222
221
|
self.layer_data_adjustments(data, layer_metadata)
|
|
223
222
|
node = Node(id=str(self.id), name=layer_metadata.get(
|
|
224
|
-
"class_name", layer["class_name"]), data=data, position=[0, 0])
|
|
223
|
+
"class_name", layer["class_name"]), data=data, position=[0, 0], shape=layer['output_shape'])
|
|
225
224
|
if 'wrapper' in layer:
|
|
226
225
|
node.wrapper = layer['wrapper']
|
|
227
226
|
self.nodes_cache[node_key] = node
|
|
@@ -49,6 +49,7 @@ class LeapGraphEditor:
|
|
|
49
49
|
self._add_connection_to_node(new_metric_node_id, input_name, input_node_id)
|
|
50
50
|
elif node_connection.node.type in (NodeMappingType.Loss, NodeMappingType.CustomLoss):
|
|
51
51
|
new_loss_node_id = self._add_loss_node(node_connection.node.name,
|
|
52
|
+
node_connection.node.user_unique_name,
|
|
52
53
|
node_connection.node.type == NodeMappingType.CustomLoss,
|
|
53
54
|
node_connection.node.arg_names)
|
|
54
55
|
for input_name, node in node_connection.node_inputs.items():
|
|
@@ -159,7 +160,7 @@ class LeapGraphEditor:
|
|
|
159
160
|
self.model_graph[new_node_id] = metric_node
|
|
160
161
|
return new_node_id
|
|
161
162
|
|
|
162
|
-
def _add_loss_node(self, loss_name: str, is_custom_loss: bool, arg_names: Optional[List[str]]=None) -> str:
|
|
163
|
+
def _add_loss_node(self, loss_name: str, user_unique_name:str, is_custom_loss: bool, arg_names: Optional[List[str]]=None) -> str:
|
|
163
164
|
new_node_id = self._generate_new_node_id()
|
|
164
165
|
|
|
165
166
|
loss_type = 'CustomLoss' if is_custom_loss else 'Loss'
|
|
@@ -169,7 +170,7 @@ class LeapGraphEditor:
|
|
|
169
170
|
new_node_id,
|
|
170
171
|
loss_node_name,
|
|
171
172
|
position=[0, 0],
|
|
172
|
-
data={'type': loss_type, 'selected': loss_name, 'name': loss_name},
|
|
173
|
+
data={'type': loss_type, 'selected': loss_name, 'name': loss_name, 'user_unique_name': user_unique_name},
|
|
173
174
|
inputs={},
|
|
174
175
|
outputs={
|
|
175
176
|
f'{new_node_id}-loss': ConnectionOutput([])
|
|
@@ -54,6 +54,10 @@ class ModelParser:
|
|
|
54
54
|
ImportModelTypeEnum.PB_TF2.value: self.convert_pb_model,
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
def _add_output_node_shape_to_model_schema(self, model_schema: Dict, keras_model: Model):
|
|
58
|
+
for i, layer in enumerate(keras_model.layers):
|
|
59
|
+
model_schema['config']['layers'][i]['output_shape'] = list(layer.output_shape)
|
|
60
|
+
|
|
57
61
|
def get_keras_model_and_model_graph(
|
|
58
62
|
self, model_path: Path, model_type: ImportModelTypeEnum) -> Tuple[Dict[str, Node], List[InputInfo], Optional[Model], Optional[str]]:
|
|
59
63
|
model_to_keras_converter: Optional[Callable[[str], Tuple[Dict[str, Node], Model, Optional[str]]]] = \
|
|
@@ -64,6 +68,9 @@ class ModelParser:
|
|
|
64
68
|
|
|
65
69
|
file_path = str(model_path)
|
|
66
70
|
model_schema, keras_model_with_weights, error_info = model_to_keras_converter(file_path)
|
|
71
|
+
|
|
72
|
+
self._add_output_node_shape_to_model_schema(model_schema, keras_model_with_weights)
|
|
73
|
+
|
|
67
74
|
model_generator = KerasJsonModelImport(self.custom_layers)
|
|
68
75
|
|
|
69
76
|
keras_model = keras_model_with_weights
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
|
|
2
2
|
leap_model_parser/__init__.py,sha256=OAU7rFHAVVWUM-cDtQ4Ohum567KN8M-YTkHZp5KiYbo,132
|
|
3
3
|
leap_model_parser/contract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
leap_model_parser/contract/graph.py,sha256=
|
|
4
|
+
leap_model_parser/contract/graph.py,sha256=uE0WecEB8WjDFNMZbRLEzmYq7w8nnyjiLU5iA9O9eqw,1180
|
|
5
5
|
leap_model_parser/contract/importmodelresponse.py,sha256=GlvnKS8xrebU2Sj0dxqtEhAOOo3DlOtT7AMJ2BlzH9E,145
|
|
6
6
|
leap_model_parser/contract/nodedata.py,sha256=1_ML0nzp3QUZ0_9mGSLhfO4_hqjYMwi0DWLwymUnWEs,43326
|
|
7
7
|
leap_model_parser/contract/ui_components.json,sha256=0lsxwOLElW1E-imCcdh3zKPWgzFuQ_bApG6aHvYfTvo,410591
|
|
8
|
-
leap_model_parser/keras_json_model_import.py,sha256=
|
|
9
|
-
leap_model_parser/leap_graph_editor.py,sha256=
|
|
10
|
-
leap_model_parser/model_parser.py,sha256=
|
|
8
|
+
leap_model_parser/keras_json_model_import.py,sha256=Bt1wZX5PK6YFUKGk2wNq03M5sckeBb3HdDpzMpMGWrA,16819
|
|
9
|
+
leap_model_parser/leap_graph_editor.py,sha256=0SDHNVkMq94PXWaTqZzMlzJMRLWebOj4uyz64c_KCTQ,13559
|
|
10
|
+
leap_model_parser/model_parser.py,sha256=ovXrVQqdbWJPMikJp96Llim-8fmcVM_Udoif5Tcf_kg,6949
|
|
11
11
|
leap_model_parser/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
leap_model_parser/utils/layerpedia/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
leap_model_parser/utils/layerpedia/layerpedia.py,sha256=1syubfXBTB630TVkgcQ-Ge7Qe9Zbr6EtZRreuqCJnQ8,9292
|
|
@@ -18,8 +18,8 @@ leap_model_parser/utils/uicomponents/generatenodedata.py,sha256=LRaPlO5jJ9pUtkvL
|
|
|
18
18
|
leap_model_parser/utils/uicomponents/tensorflowinscpection.py,sha256=ym613z9iQKPDBpr0RYD35bTABdm1L-Ez86G47BYT7qw,6775
|
|
19
19
|
leap_model_parser/utils/uicomponents/ui_components.json,sha256=0lsxwOLElW1E-imCcdh3zKPWgzFuQ_bApG6aHvYfTvo,410591
|
|
20
20
|
leap_model_parser/utils/uicomponents/ui_components_config.yaml,sha256=cRH8T-c3TAL0nfefRvt9pFsjbTWNEg38NRyHR7RpJsk,19534
|
|
21
|
-
leap_model_parser-0.1.
|
|
22
|
-
leap_model_parser-0.1.
|
|
23
|
-
leap_model_parser-0.1.
|
|
24
|
-
leap_model_parser-0.1.
|
|
25
|
-
leap_model_parser-0.1.
|
|
21
|
+
leap_model_parser-0.1.225.dev1.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
|
|
22
|
+
leap_model_parser-0.1.225.dev1.dist-info/METADATA,sha256=RK88uZWeYk9yba7RknolL0wNTsI72PK0pIP8_Ur9e5g,1109
|
|
23
|
+
leap_model_parser-0.1.225.dev1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
24
|
+
leap_model_parser-0.1.225.dev1.dist-info/entry_points.txt,sha256=ZvV6EuQt1uAqwapNg5Lo2qjJM9ZG5g2wfzZoLh_Ztyk,77
|
|
25
|
+
leap_model_parser-0.1.225.dev1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{leap_model_parser-0.1.223.dist-info → leap_model_parser-0.1.225.dev1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|