节点

class onnx_ir.Node(domain, op_type, inputs, attributes=(), *, overload='', num_outputs=None, outputs=None, version=None, graph=None, name=None, doc_string=None, metadata_props=None)

IR 节点。

提示

要以更方便的方式(支持 Python 对象作为属性)创建节点,请使用 onnx_ir.node() 构造函数。

如果提供了 graph,则该节点将被添加到图中。否则,用户需要负责调用 graph.append(node)(或 Graph 中的其他修改方法)将该节点添加到图中。

节点初始化后,它会将自己添加为其输入值的用户。

节点的输出值在节点初始化期间创建,并且是不可变的。要更改输出值,请创建一个新节点,并对于旧输出的每个使用(output.uses()),通过调用 replace_input_with() 替换使用节点中的输入。您还可以使用 replace_all_uses_with() 方法替换输出值的所有使用。

注意

domain"ai.onnx" 时,它被规范化为 ""

参数:
doc_string
append(nodes)[source]

在图中此节点之后插入节点。

它等同于调用 graph.insert_after(self, nodes)

示例

Before: previous_node -> self
        previous_node' -> node -> next_node'
After:  previous_node -> self -> node
        previous_node' -> next_node'
参数:

nodes (Node | Iterable[Node]) – 一个或一系列节点,放在此节点之后。

返回类型:

property attributes: Attributes

节点的属性,表示为 dict[str, Attr],并附带额外的访问方法。

将其用作字典,键是属性名称,值是 Attr 对象。

使用 node.attributes.add(attr) 向节点添加属性。使用 node.attributes.get_int(name, default) 获取整数属性值。有关更多方法,请参阅 Attributes

display(*, page=False)[source]

漂亮地打印节点。

此方法用于调试和可视化目的。

参数:

page (bool)

返回类型:

property domain: str

算子的域。对于 onnx 算子,这是一个空字符串。

property graph: Graph | None

节点所属的图。

如果节点未添加到任何图,此属性为 None。

property inputs: Sequence[Value | None]

节点的输入值。

输入是不可变的。要更改输入,请创建一个新节点,并通过在此节点输出的使用节点上调用 replace_input_with() 来替换使用节点的输入。

property meta: MetadataStore

用于中间分析的元数据存储。

如果您希望元数据被序列化为 ONNX proto,请写入 metadata_props

property metadata_props: dict[str, str]

节点的元数据属性。

元数据属性用于存储节点的附加信息。与 meta 不同,此属性被序列化为 ONNX proto。

property name: str | None

节点的可选名称。

op_identifier()[source]

返回节点的算子标识符。

算子标识符是域、算子类型和重载的元组。

返回类型:

tuple[str, str, str]

property op_type: str

所调用算子的名称。

property outputs: Sequence[Value]

节点的输出值。

输出一旦初始化便始终附加到此节点(不可变),除了列表可以调整大小以删除或添加输出。

使用 resize_outputs() 更改节点的输出数量。

property overload: str

节点调用函数时的重载名称。

predecessors()[source]

以确定性顺序返回节点的去重前驱节点。

返回类型:

Sequence[Node]

prepend(nodes)[source]

在图中此节点之前插入节点。

它等同于调用 graph.insert_before(self, nodes)

示例

Before: previous_node -> self
        previous_node' -> node -> next_node'
After:  previous_node -> node -> self
        previous_node' -> next_node'
参数:

nodes (Node | Iterable[Node]) – 一个或一系列节点,放在此节点之前。

返回类型:

replace_input_with(index, value)[source]

用新值替换输入。

参数:
返回类型:

resize_inputs(new_size, /)[source]

调整节点输入的大小。

如果新大小大于当前大小,则添加新的输入作为 None。如果新大小小于当前大小,则移除多余的输入。

调整 inputs 大小后,可以使用 replace_input_with() 设置新的输入。

在 0.1.13 版本中添加。

参数:

new_size (int) – 新的输入数量。

返回类型:

resize_outputs(new_size, /)[source]

调整节点输出的大小。

如果新大小大于当前大小,则创建新的输出值。如果新大小小于当前大小,则移除多余的输出值。被移除的输出值不得有任何用途。

在 0.1.13 版本中添加。

参数:

new_size (int) – 新的输出数量。

引发:

ValueError – 如果新大小小于当前大小且被移除的输出有用途。

返回类型:

successors()[source]

以确定性顺序返回节点的去重后继节点。

返回类型:

Sequence[Node]

property version: int | None

所调用算子的操作集版本。

如果为 None,则版本未指定,将遵循图的版本。此属性是 ONNX IR 特有的,允许在图中混合使用操作集,以支持更灵活的图转换。它不存在于 ONNX 序列化 (protobuf) 规范中。