leap-model-parser 0.1.256.dev4__tar.gz → 0.1.257__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.
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/PKG-INFO +2 -2
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/leap_graph_editor.py +37 -1
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/pyproject.toml +2 -2
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/LICENSE +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/README.md +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/__init__.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/__init__.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/graph.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/importmodelresponse.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/nodedata.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/ui_components.json +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/keras_json_model_import.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/model_parser.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/__init__.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/layerpedia/__init__.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/layerpedia/layerpedia.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/tlinspection/__init__.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/tlinspection/leapinspection.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/uicomponents/__init__.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/uicomponents/generatenodedata.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/uicomponents/tensorflowinscpection.py +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/uicomponents/ui_components.json +0 -0
- {leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/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.
|
|
3
|
+
Version: 0.1.257
|
|
4
4
|
Summary:
|
|
5
5
|
Home-page: https://github.com/tensorleap/leap-model-parser
|
|
6
6
|
License: MIT
|
|
@@ -17,7 +17,7 @@ Requires-Dist: keras-data-format-converter (==0.1.24)
|
|
|
17
17
|
Requires-Dist: leap-model-rebuilder (==0.1.7)
|
|
18
18
|
Requires-Dist: numpy (>=1.22.3,<2.0.0)
|
|
19
19
|
Requires-Dist: onnx (==1.13.0)
|
|
20
|
-
Requires-Dist: onnx2kerastl (==0.0.198
|
|
20
|
+
Requires-Dist: onnx2kerastl (==0.0.198)
|
|
21
21
|
Requires-Dist: tensorflow (==2.12.0) ; platform_machine == "x86_64"
|
|
22
22
|
Requires-Dist: tensorflow-io-gcs-filesystem (==0.34.0)
|
|
23
23
|
Requires-Dist: tensorflow-macos (==2.12.0) ; platform_machine == "arm64"
|
{leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/leap_graph_editor.py
RENAMED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
from enum import Enum
|
|
2
3
|
from typing import Optional, Dict, Any, List
|
|
3
4
|
|
|
@@ -55,8 +56,16 @@ class LeapGraphEditor:
|
|
|
55
56
|
for input_name, node in node_connection.node_inputs.items():
|
|
56
57
|
input_node_id = self._find_or_add_input_node(node)
|
|
57
58
|
self._add_connection_to_node(new_loss_node_id, input_name, input_node_id)
|
|
59
|
+
elif node_connection.node.type.value == 'CustomLatentSpace':
|
|
60
|
+
new_latent_space_node_id = self._add_latent_space_node(
|
|
61
|
+
node_connection.node.name,
|
|
62
|
+
node_connection.node.user_unique_name, node_connection.node.arg_names)
|
|
63
|
+
for input_name, node in node_connection.node_inputs.items():
|
|
64
|
+
input_node_id = self._find_or_add_input_node(node)
|
|
65
|
+
self._add_connection_to_node(new_latent_space_node_id, input_name, input_node_id)
|
|
58
66
|
else:
|
|
59
|
-
|
|
67
|
+
# Deliberately warn instead of raising, so connection types added by newer code-loaders don't fail the import
|
|
68
|
+
logging.warning(f"Skipping connection of unsupported node type {node_connection.node.type.name}")
|
|
60
69
|
|
|
61
70
|
def model_graph_dict(self) -> Dict[str, Any]:
|
|
62
71
|
json_model_graph = {}
|
|
@@ -81,6 +90,7 @@ class LeapGraphEditor:
|
|
|
81
90
|
return None
|
|
82
91
|
|
|
83
92
|
def _replace_prediction_node_name_with_correct_name(self, connections: List[NodeConnection]) -> List[NodeConnection]:
|
|
93
|
+
index_by_resolved_name: Dict[str, int] = {}
|
|
84
94
|
for connection in connections:
|
|
85
95
|
if connection.node_inputs is None:
|
|
86
96
|
continue
|
|
@@ -88,6 +98,15 @@ class LeapGraphEditor:
|
|
|
88
98
|
if 'Prediction' in input_node.type.value:
|
|
89
99
|
prediction_index = int(input_node.type.value.replace('Prediction', ''))
|
|
90
100
|
origin_name = self.keras_model.outputs[prediction_index].node.layer.name
|
|
101
|
+
known_index = index_by_resolved_name.setdefault(origin_name, prediction_index)
|
|
102
|
+
# The same tensor returned twice binds correctly; two tensors of one layer
|
|
103
|
+
# (a shared layer, a multi-output op) cannot be told apart by layer name.
|
|
104
|
+
if (self.keras_model.outputs[known_index] is not
|
|
105
|
+
self.keras_model.outputs[prediction_index]):
|
|
106
|
+
raise Exception(
|
|
107
|
+
f"Prediction{known_index} and Prediction{prediction_index} both resolve to "
|
|
108
|
+
f"layer '{origin_name}', so their bindings are ambiguous; give the model "
|
|
109
|
+
f"outputs distinct layers")
|
|
91
110
|
input_node.name = origin_name
|
|
92
111
|
|
|
93
112
|
return connections
|
|
@@ -176,6 +195,23 @@ class LeapGraphEditor:
|
|
|
176
195
|
self.model_graph[new_node_id] = metric_node
|
|
177
196
|
return new_node_id
|
|
178
197
|
|
|
198
|
+
def _add_latent_space_node(self, latent_space_name: str,
|
|
199
|
+
user_unique_name: str, arg_names: List[str]) -> str:
|
|
200
|
+
new_node_id = self._generate_new_node_id()
|
|
201
|
+
|
|
202
|
+
latent_space_node = Node(
|
|
203
|
+
new_node_id,
|
|
204
|
+
'CustomLatentSpace',
|
|
205
|
+
position=[0, 0],
|
|
206
|
+
data={'latent_space_name': latent_space_name, 'type': 'CustomLatentSpace',
|
|
207
|
+
'name': latent_space_name,
|
|
208
|
+
'arg_names': arg_names, "user_unique_name": user_unique_name},
|
|
209
|
+
inputs={},
|
|
210
|
+
outputs={})
|
|
211
|
+
|
|
212
|
+
self.model_graph[new_node_id] = latent_space_node
|
|
213
|
+
return new_node_id
|
|
214
|
+
|
|
179
215
|
def _add_loss_node(self, loss_name: str, user_unique_name:str, is_custom_loss: bool, arg_names: Optional[List[str]]=None) -> str:
|
|
180
216
|
new_node_id = self._generate_new_node_id()
|
|
181
217
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "leap-model-parser"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.257"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["idan <idan.yogev@tensorleap.ai>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -18,7 +18,7 @@ tensorflow = {version = "2.12.0", markers = "platform_machine == 'x86_64'"}
|
|
|
18
18
|
tensorflow-macos = {version = "2.12.0", markers = "platform_machine == 'arm64'"}
|
|
19
19
|
numpy = "^1.22.3"
|
|
20
20
|
onnx = "1.13.0"
|
|
21
|
-
onnx2kerastl = "0.0.198
|
|
21
|
+
onnx2kerastl = "0.0.198"
|
|
22
22
|
keras-data-format-converter = "0.1.24"
|
|
23
23
|
leap-model-rebuilder = "0.1.7"
|
|
24
24
|
tensorflow-io-gcs-filesystem = "0.34.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/__init__.py
RENAMED
|
File without changes
|
{leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/contract/nodedata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/model_parser.py
RENAMED
|
File without changes
|
{leap_model_parser-0.1.256.dev4 → leap_model_parser-0.1.257}/leap_model_parser/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|