Value

class onnx_ir.Value(producer=None, *, index=None, name=None, shape=None, type=None, doc_string=None, const_value=None, metadata_props=None)

IR 值。

值是一个命名实体,可用于表示图、函数或节点的输入或输出。它存储的信息概括了 ONNX 规范中的 ValueInfoProto

Value 始终不被节点拥有或仅被一个节点拥有。当值不被拥有时,它必须是图或函数的输入。producerindexNone

当值被节点拥有时,它是节点的输出。可以通过 producer() 访问生成值的节点。可以通过 index() 访问生成值的节点输出的索引。

要查找所有使用此值作为输入的节点,请调用 uses()。可以通过 consumers() 获取消费节点。

要检查该值是否是图的输入、输出或初始化器,请使用 is_graph_input()is_graph_output()is_initializer()

使用 graph 获取拥有该值的图。

参数:
  • producer (Node | None)

  • index (int | None)

  • name (str | None)

  • shape (Shape | None)

  • type (_protocols.TypeProtocol | None)

  • doc_string (str | None)

  • const_value (_protocols.TensorProtocol | None)

  • metadata_props (dict[str, str] | None)

doc_string
property const_value: TensorProtocol | None

值的后备常量张量。

如果 Value 具有 const_value 并且是图初始化器字典的一部分,则该值是初始化值。其 const_value 在序列化时将作为 GraphProto 中的 initializer 出现。

如果 Value 不是图初始化器字典的一部分,则 const_value 字段在序列化期间将被忽略。

const_value 可以由不同的原始数据类型(如 numpy 数组)支持。唯一的保证是它符合 TensorProtocol。

consumers()[source]

返回消耗此值的节点(已去重)。

返回类型:

Sequence[Node]

display(*, page=False)

美观地打印对象。

参数:

page (bool) – 是否分页输出。

返回类型:

property dtype: DataType | None

张量的数据类型。

property graph: Graph | None

返回定义此值的图。

当值是图的输入/输出/初始化器时,拥有图就是该图。当值是节点的输出时,拥有图是该节点所属的图。当值不被任何图拥有时,它返回 None

index()[source]

定义节点输出的索引。

返回类型:

int | None

is_graph_input()[source]

该值是否为图的输入。

返回类型:

布尔

is_graph_output()[source]

该值是否为图的输出。

返回类型:

布尔

is_initializer()[source]

该值是否为图的初始化器。

返回类型:

布尔

property meta: MetadataStore

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

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

property metadata_props: dict[str, str]

值的元数据属性。

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

property name: str | None
producer()[source]

生成此值的节点。

当 producer 为 None 时,该值不属于任何节点,通常是图输入或初始化器。您可以使用 graph`() 查找拥有此值的图。使用 is_graph_input()is_graph_output()is_initializer() 检查该值是否为图的输入、输出或初始化器。

返回类型:

Node | None

replace_all_uses_with(replacement, /, replace_graph_outputs=False)[source]

将此值的所有用途替换为另一个值。

提示

处理图输出

要同时替换引用被替换值的图输出,请将 replace_graph_outputs 设置为 True,或在调用此函数之前手动更新图输出,以避免在 replace_graph_outputs=False 时引发错误。

当一个值在图输出中多次出现时要小心——这是无效的。需要在每个重复输出上添加一个恒等节点,以确保 ONNX 图有效。

您可能还希望将此值的名称分配给替换值,以在它作为图输出时保持名称。

要用另一序列的值替换一系列值的使用,请考虑使用 onnx_ir.convenience.replace_all_uses_with()

0.1.12 版本新增。

参数:
  • replacement (Value) – 用于替换所有用途的值。

  • replace_graph_outputs (bool) – 如果为 True,引用此值的图输出也将更新为引用替换项。

引发:

ValueError – 当 replace_graph_outputs 为 False 且要替换的值是图输出时。

返回类型:

property shape: Shape | None
property type: TypeProtocol | None

张量的类型。

示例类型可以是 TensorTypeSparseTensorTypeSequenceTypeOptionalType。要获取张量的数据类型,请使用 type.dtype 或方便地使用 dtype

uses()[source]

返回该值的使用集合。

该集合包含 (Node, index) 元组,其中 index 是节点输入的索引。例如,如果 node.inputs[1] == value,则使用为 (node, 1)

返回类型:

Collection[Usage]