in onnxconverter_common/optimizer.py [0:0]
def apply(self, node_list):
# make a copy of self.begin.precedence
precedence_list = list(self.begin.precedence)
for branch in precedence_list:
if branch.is_reserved:
return None, False
# make a copy of self.end_p.successor
successor_list = list(self.begin.successor)
output_name = ''
for suc in successor_list:
if suc.origin is None:
output_name = list(self.begin.output.values())[0]
fan_in_node_output_name = 'fan_in_adjustment_out' + str(FanInSolution.number)
self.begin.out_redirect(output_name, fan_in_node_output_name)
FanInSolution.number = FanInSolution.number + 1
for suc_2 in successor_list:
suc_2.in_redirect(output_name, fan_in_node_output_name)
for suc in successor_list:
if suc.origin is None:
transpose_output_name = [output_name]
else:
transpose_output_name = ['fan_in_adjustment_out' + str(FanInSolution.number)]
if self.perm == []:
nnode = LinkedNode(
helper.make_node(
'Transpose',
['fan_in_adjustment_in' + str(FanInSolution.number)],
transpose_output_name,
name='TransposeFanIn_succ_' + str(FanInSolution.number)))
else:
nnode = LinkedNode(
helper.make_node(
'Transpose',
['fan_in_adjustment_in' + str(FanInSolution.number)],
transpose_output_name,
perm=self.perm,
name='TransposeFanIn_succ_' + str(FanInSolution.number)))
FanInSolution.number = FanInSolution.number + 1
node_list = Solution.add_siso_node(node_list, self.begin, suc, list(self.begin.output.values())[0], nnode)
for branch in precedence_list:
node_list = Solution.delete_node_1ton(node_list, branch.get_precedence_by_idx(0), branch, self.begin)
return node_list, True