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始终不被节点拥有或仅被一个节点拥有。当值不被拥有时,它必须是图或函数的输入。producer和index为None。当值被节点拥有时,它是节点的输出。可以通过
producer()访问生成值的节点。可以通过index()访问生成值的节点输出的索引。要查找所有使用此值作为输入的节点,请调用
uses()。可以通过consumers()获取消费节点。要检查该值是否是图的输入、输出或初始化器,请使用
is_graph_input()、is_graph_output()或is_initializer()。使用
graph获取拥有该值的图。- 参数:
- doc_string¶
- property const_value: TensorProtocol | None¶
值的后备常量张量。
如果
Value具有const_value并且是图初始化器字典的一部分,则该值是初始化值。其const_value在序列化时将作为 GraphProto 中的initializer出现。如果
Value不是图初始化器字典的一部分,则const_value字段在序列化期间将被忽略。const_value可以由不同的原始数据类型(如 numpy 数组)支持。唯一的保证是它符合 TensorProtocol。
- property graph: Graph | None¶
返回定义此值的图。
当值是图的输入/输出/初始化器时,拥有图就是该图。当值是节点的输出时,拥有图是该节点所属的图。当值不被任何图拥有时,它返回
None。
- property meta: MetadataStore¶
用于中间分析的元数据存储。
如果您希望元数据序列化为 ONNX proto,请写入
metadata_props。
- 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 版本新增。
- 参数:
- 引发:
ValueError – 当
replace_graph_outputs为 False 且要替换的值是图输出时。- 返回类型:
无
- property type: TypeProtocol | None¶
张量的类型。
示例类型可以是
TensorType、SparseTensorType、SequenceType、OptionalType。要获取张量的数据类型,请使用type.dtype或方便地使用dtype。
- uses()[source]¶
返回该值的使用集合。
该集合包含
(Node, index)元组,其中 index 是节点输入的索引。例如,如果node.inputs[1] == value,则使用为(node, 1)。- 返回类型:
Collection[Usage]