MCPcopy
hub / github.com/OpenPPL/ppq / delete_isolated

Method delete_isolated

ppq/IR/morph.py:401–443  ·  view source on GitHub ↗

Remove Isolated Variable from Graph.

(self)

Source from the content-addressed store, hash-verified

399 self.delete_isolated()
400
401 def delete_isolated(self):
402 """Remove Isolated Variable from Graph."""
403 blacklist = [None]
404 while len(blacklist) > 0:
405 blacklist = []
406 # delete all operations which are not links to a valid graph output
407 for op in self.graph.operations.values():
408 if len(self.graph.get_downstream_operations(op)) == 0:
409 output_names = [var.name for var in op.outputs]
410 if all([name not in self.graph.outputs for name in output_names]):
411 blacklist.append(op)
412
413 for op in blacklist:
414 for var in op.outputs:
415 self.graph.remove_variable(var)
416 self.graph.remove_operation(op)
417
418 var_blacklist = [None]
419 while len(var_blacklist) > 0:
420 var_blacklist = set()
421 # delete all variables that links to invalid operations:
422 for var in self.graph.variables.values():
423 # 删除无根无输出的变量
424 if var.source_op is None and len(var.dest_ops) == 0:
425 var_blacklist.add(var)
426
427 # 删除根节点不在图中的变量
428 if var.source_op is not None and var.source_op.name not in self.graph.operations:
429 var_blacklist.add(var)
430
431 # 删除连接到未知节点的变量
432 for op in var.dest_ops:
433 if op.name not in self.graph.operations:
434 var_blacklist.add(var)
435
436 # 删除孤立变量
437 if var.source_op is None and var.name not in self.graph.inputs:
438 if len(var.dest_ops) == 0: var_blacklist.add(var)
439
440 # 没有输出的不能删...会影响算子输出顺序...
441
442 for var in var_blacklist:
443 self.graph.remove_variable(var)
444
445 def format_parameter(self) -> None:
446 """ Split parameter that has more than 1 dest ops """

Callers 5

truncate_graphFunction · 0.95
processMethod · 0.95
truncate_on_varMethod · 0.95
QuantZoo_Yolo.pyFile · 0.80
test_graph_api.pyFile · 0.80

Calls 5

remove_variableMethod · 0.80
remove_operationMethod · 0.80
addMethod · 0.80
appendMethod · 0.45

Tested by

no test coverage detected