Added check that new name is unique. (#4516)
* Added check that new name is unique.. * Added unique names test. * Fixed unique name check. * Fixed bug. * Reformat code. * Fixed bug, extended tests. * Uncomment tests.
This commit is contained in:
parent
f88638006c
commit
9f5fad16e7
@ -30,7 +30,12 @@ class ResultRename(BackReplacementPattern):
|
||||
if node.in_ports():
|
||||
prev_node_out_port = node.in_port(0).get_connection().get_source()
|
||||
tensor_names = prev_node_out_port.get_tensor_names()
|
||||
if tensor_names:
|
||||
# Graph may contain Result nodes with names equal to input tensors and
|
||||
# renaming in this case is not needed. The example of such situation is
|
||||
# IR reader check when graph is read with correct Result names.
|
||||
if tensor_names and node.soft_get('name') == tensor_names[0]:
|
||||
continue
|
||||
if tensor_names and not graph.get_op_nodes(name=tensor_names[0]):
|
||||
result_name = tensor_names[0]
|
||||
else:
|
||||
result_name = prev_node_out_port.node.soft_get('name', prev_node_out_port.node.id) + \
|
||||
|
@ -23,26 +23,57 @@ from mo.utils.unittest.graph import build_graph, regular_op, result
|
||||
|
||||
nodes = {
|
||||
**regular_op('Op1', {'type': 'Op1', 'kind': 'op', 'op': 'Op1'}),
|
||||
**result('result'),
|
||||
'Op1_data': {'kind': 'data', 'fw_tensor_debug_info': [('Op1', 0, 'Op1_tensor')]}
|
||||
**regular_op('Op2', {'type': 'Op2', 'kind': 'op', 'op': 'Op2'}),
|
||||
**result('result1'),
|
||||
**result('result2'),
|
||||
'Op1_data': {'kind': 'data', 'fw_tensor_debug_info': [('Op1', 0, 'Op1_tensor')]},
|
||||
'Op2_data': {'kind': 'data', 'fw_tensor_debug_info': [('Op1', 0, 'Op2_tensor')]},
|
||||
}
|
||||
|
||||
|
||||
class ResultRenameTest(unittest.TestCase):
|
||||
def test_case1(self):
|
||||
graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result')])
|
||||
graph_ref = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result')])
|
||||
res_node = Node(graph_ref, 'result')
|
||||
res_node['name'] = 'Op1_tensor'
|
||||
|
||||
graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1')])
|
||||
ResultRename().find_and_replace_pattern(graph)
|
||||
(flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True)
|
||||
self.assertTrue(flag, resp)
|
||||
res_node = Node(graph, 'result1')
|
||||
self.assertTrue(res_node['name'] == 'Op1_tensor')
|
||||
|
||||
def test_case2(self):
|
||||
graph = build_graph(nodes, [])
|
||||
graph_ref = build_graph(nodes, [])
|
||||
|
||||
ResultRename().find_and_replace_pattern(graph)
|
||||
(flag, resp) = compare_graphs(graph, graph_ref, 'result', check_op_attrs=True)
|
||||
(flag, resp) = compare_graphs(graph, graph_ref, 'result1', check_op_attrs=True)
|
||||
self.assertTrue(flag, resp)
|
||||
|
||||
def test_case3(self):
|
||||
graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1')])
|
||||
res_node_graph = Node(graph, 'Op1')
|
||||
res_node_graph['name'] = 'Op1_tensor'
|
||||
ResultRename().find_and_replace_pattern(graph)
|
||||
res_node = Node(graph, 'result1')
|
||||
self.assertTrue(res_node['name'] == 'Op1_tensor/sink_port_0')
|
||||
|
||||
def test_case4(self):
|
||||
graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1'),
|
||||
('Op1_data', 'Op2'), ('Op2', 'Op2_data'),
|
||||
('Op2_data', 'result2')])
|
||||
ResultRename().find_and_replace_pattern(graph)
|
||||
res1_node = Node(graph, 'result1')
|
||||
res2_node = Node(graph, 'result2')
|
||||
self.assertTrue(res1_node['name'] == 'Op1_tensor')
|
||||
self.assertTrue(res2_node['name'] == 'Op2_tensor')
|
||||
|
||||
def test_case5(self):
|
||||
graph = build_graph(nodes, [('Op1', 'Op1_data'), ('Op1_data', 'result1'),
|
||||
('Op1_data', 'Op2'), ('Op2', 'Op2_data'),
|
||||
('Op2_data', 'result2')])
|
||||
|
||||
res_node_graph = Node(graph, 'result1')
|
||||
res_node_graph['name'] = 'Op1_tensor'
|
||||
ResultRename().find_and_replace_pattern(graph)
|
||||
res1_node = Node(graph, 'result1')
|
||||
res2_node = Node(graph, 'result2')
|
||||
self.assertTrue(res1_node['name'] == 'Op1_tensor')
|
||||
self.assertTrue(res2_node['name'] == 'Op2_tensor')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user