Graph¶
- class onnx_ir.Graph(inputs, outputs, *, nodes, initializers=(), doc_string=None, opset_imports=None, name=None, metadata_props=None)¶
IR 图。
Graph 表示一个计算图。除了 ONNX 规范中指定的字段外,它还包含
opset_imports的映射。这允许不同的子图导入不同的 opset。协调不同的 opset 是反序列化器的责任。节点不保证按拓扑排序。但迭代顺序在不同运行之间应该是确定的。用户有责任维护节点的拓扑顺序。
请注意,Graph 中没有
node属性。Graph 可以被视为一个节点序列,并应如此使用。例如,要将所有节点获取为列表,请调用list(graph)。0.1.1 版中已更改: 具有非 None 生产者的值将被拒绝作为图输入或初始化器。
0.1.1 版中新增: 为初始化器和属性添加了
add方法。- 参数:
- name¶
图的名称。
- inputs¶
图的输入值。
- outputs¶
图的输出值。
- initializers¶
图中的初始化器。
- doc_string¶
文档字符串。
- opset_imports¶
图导入的 Opset。
- metadata_props¶
将序列化到 ONNX 文件中的元数据。
- meta¶
用于图转换传递的元数据存储。
- name¶
- all_nodes()[source]¶
在 O(#nodes + #attributes) 时间内获取图中及其子图中的所有节点。
这是
onnx_ir.traversal.RecursiveGraphIterator(graph)的别名。对于更高级的节点遍历,请考虑使用onnx_ir.traversal.RecursiveGraphIterator。0.1.2 版本新增。
- append(node, /)[source]¶
在 O(1) 时间内将节点附加到图中。
如果任何名称为
None,则会为节点及其值分配唯一的名称。- 参数:
node (Node) – 要附加的节点。
- 引发:
ValueError – 如果节点属于另一个图。
- 返回类型:
无
- count(value) integer -- return number of occurrences of value¶
- extend(nodes, /)[source]¶
在 O(#new_nodes) 时间内使用给定节点扩展图。
如果任何名称为
None,则会为节点及其值分配唯一的名称。- 参数:
- 引发:
ValueError – 如果任何节点属于另一个图。
- 返回类型:
无
- index(value[, start[, stop]]) integer -- return first index of value.¶
如果值不存在,则引发 ValueError。
支持 start 和 stop 参数是可选的,但建议使用。
- property initializers: GraphInitializers¶
图的初始化器,为
dict[str, Value]类型。键是初始化器的名称。值是
Value对象。此属性还支持
add方法,该方法接受一个Value并将其添加到初始化器中(如果尚不存在)。注意
当使用
graph.initializers[key] = value设置初始化器时,如果值没有名称,它将被分配key作为其名称。
- property inputs: MutableSequence[Value]¶
- insert_after(node, new_nodes, /)[source]¶
在 O(#new_nodes) 时间内,在给定节点之后插入新节点。
如果任何名称为
None,则会为节点及其值分配唯一的名称。- 参数:
- 引发:
ValueError – 如果任何节点属于另一个图。
- 返回类型:
无
- insert_before(node, new_nodes, /)[source]¶
在 O(#new_nodes) 时间内,在给定节点之前插入新节点。
如果任何名称为
None,则会为节点及其值分配唯一的名称。- 参数:
- 引发:
ValueError – 如果任何节点属于另一个图。
- 返回类型:
无
- property meta: MetadataStore¶
用于中间分析的元数据存储。
如果要将元数据序列化到 ONNX proto,请写入
metadata_props。
- node(index_or_name, /)[source]¶
按索引或名称获取节点。
这是一个 O(n) 操作。获取图两端(0 或 -1)的节点是 O(1)。
注意
如果需要重复随机访问,请考虑使用
list(graph)将其转换为列表。或者对于按名称重复访问,转换为字典:{node.name for node in graph}。当提供名称并且存在多个同名节点时,返回第一个同名节点。
- 参数:
- 返回:
如果找到,则为节点。
- 引发:
IndexError – 如果索引超出范围。
ValueError – 如果未找到具有给定名称的节点。
- 返回类型:
- num_nodes()[source]¶
在 O(1) 时间内获取图中的节点数量。
请注意,此方法返回此图直接包含的节点数量。它不计算子图中的节点。
这是
len(graph)的别名。如果您喜欢更具描述性的名称以提高可读性,请使用此方法。- 返回类型:
- property outputs: MutableSequence[Value]¶
- register_initializer(value)[source]¶
向图注册初始化器。
这是一个方便的方法,用于通过检查向图注册初始化器。
- 参数:
- 引发:
ValueError – 如果已注册同名但不是此值的值。
ValueError – 如果值没有名称。
ValueError – 如果初始化器是由节点生成的。
ValueError – 如果值没有设置
.const_value。
- 返回类型:
无
- remove(nodes, /, safe=False)[source]¶
在 O(#要移除的节点数) 时间内从图中移除节点。
如果发生任何错误,为确保图不会处于不一致状态,图不会被修改。
- 参数:
- 引发:
ValueError – 如果要移除的任何节点不属于此图。
ValueError – (当
safe=True时) 如果节点不属于此图或节点有用户。ValueError – (当
safe=True时) 如果节点仍被其他未移除的节点使用。
- 返回类型:
无
- sort()[source]¶
在 O(#nodes + #values) 时间内对此图和所有子图执行拓扑排序。
此排序是稳定的。它尽可能地保留原始顺序。
参考:https://github.com/madelson/MedallionTopologicalSort#stable-sort
- 引发:
ValueError – 如果图包含循环,导致无法进行拓扑排序。
- 返回类型:
无