in onnxconverter_common/optimizer.py [0:0]
def find(node):
solution = None
if node.in_single_path_and_inner:
if node.origin.op_type == 'Cast':
to_value = node.get_attribute('to')
if to_value == 1 and node.successor[0].in_single_path_and_inner \
and node.successor[0].origin.op_type in _move_cast_support_types:
solution = SwapOpSolution(node.precedence[0], node, node.successor[0],
node.successor[0].successor[0])
return solution
elif to_value in [6, 7] and node.precedence[0].in_single_path_and_inner \
and node.precedence[0].origin.op_type in _move_cast_support_types:
solution = SwapOpSolution(node.precedence[0].precedence[0], node.precedence[0], node,
node.successor[0])
return solution
if node.origin.op_type in _activation_node_type:
if node.successor[0].in_single_path_and_inner \
and node.successor[0].origin.op_type in _move_cast_support_types:
solution = SwapOpSolution(node.precedence[0], node, node.successor[0],
node.successor[0].successor[0])
return solution
elif (node.successor[0].in_miso_and_inner and
node.successor[0].origin.op_type in _move_cast_support_types):
num_successor_inputs = len(node.successor[0].precedence)
all_initializers = True
for idx_ in range(1, num_successor_inputs):
suc_pred = node.successor[0].get_precedence_by_idx(idx_)
if suc_pred and suc_pred.origin is not None:
all_initializers = False
break
if all_initializers:
solution = SwapOpSolution(node.precedence[0], node, node.successor[0],
node.successor[0].successor[0])
return solution
return None