diff options
author | Ruomei Yan <ruomei.yan@arm.com> | 2023-04-20 09:51:20 +0100 |
---|---|---|
committer | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2023-10-11 15:44:51 +0100 |
commit | f3e6597dd50ec70f043d692b773f2d9fd31519ae (patch) | |
tree | 322ccb75e0cc594c57308288cae333a72401979e /src/mlia/nn/rewrite/core/graph_edit/join.py | |
parent | 867f37d643e66c0223457c28f5345f2f21db97f2 (diff) | |
download | mlia-f3e6597dd50ec70f043d692b773f2d9fd31519ae.tar.gz |
Implement first rewrite (proof of concept)
* Define replacement function fully_connected layer
* Define RewriteConfiguration and Rewriter to integrate
rewrite module into mlia optimize command
* Fix a bug in the ethos_u/data_collection.py file
* Fix a bug in join.py
* Remove diff_stats and use diff instead, added related
changes around this to ensure e2e tests passing
* Add unit tests for all changes
* Fix bug in diff_stats function
* The bug was caused by a dividing by numpy array
of all zeros. The previous way of handling it
did not consider the all zeros case but only
dealt with partially zeros
* unit tests added.
* Fix the bug in rewrite/core/graph_edit/join.py
* Remove the possibility of passing None to append_relabel
function because it is immutable
* The bug happened when empty dictionary was passed in the
append_relabel function and the function overwrites the
reference of operator_map which caused the dictionary
was not updated after the function call
Resolves: MLIA-749, MLIA-864, MLIA-866
Change-Id: I1ab426996232f182345e6e98033d5dcb32aea08c
Signed-off-by: Benjamin Klimczak <benjamin.klimczak@arm.com>
Diffstat (limited to 'src/mlia/nn/rewrite/core/graph_edit/join.py')
-rw-r--r-- | src/mlia/nn/rewrite/core/graph_edit/join.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/mlia/nn/rewrite/core/graph_edit/join.py b/src/mlia/nn/rewrite/core/graph_edit/join.py index 14a7347..2530ec8 100644 --- a/src/mlia/nn/rewrite/core/graph_edit/join.py +++ b/src/mlia/nn/rewrite/core/graph_edit/join.py @@ -22,8 +22,8 @@ def join_models( input_src: str | Path, input_dst: str | Path, output_file: str | Path, - subgraph_src: SubGraphT = 0, - subgraph_dst: SubGraphT = 0, + subgraph_src: int = 0, + subgraph_dst: int = 0, ) -> None: """Join two models and save the result into a given model file path.""" src_model = load(input_src) @@ -150,12 +150,12 @@ def join_subgraphs( dst_subgraph.outputs = list(set(src_subgraph.outputs).union(dst_subgraph.outputs)) -def append_relabel(src: list, dst: list, operator_map: dict | None = None) -> dict: - """Return a map over relabeled tensors in a subgraph.""" - if not operator_map: - operator_map = {} +def append_relabel(src: list, dst: list, operator_map: dict) -> None: + """Update the operator map over relabeled tensors in a subgraph.""" + if operator_map is None: + raise ValueError("The input operator map cannot be None!") + for i, x in enumerate(src): # pylint: disable=invalid-name if i not in operator_map: operator_map[i] = len(dst) dst.append(x) - return operator_map |