Protos¶
这些结构在文件onnx/*.proto
中使用protobuf定义。建议使用模块onnx.helper中的函数来创建它们,而不是直接实例化它们。每个结构都可以使用函数print
打印,并呈现为JSON字符串。
AttributeProto¶
此类用于定义由NodeProto自身定义的操作符的属性。它是一个命名属性,包含单个浮点数、整数、字符串、图形和张量值,或重复的浮点数、整数、字符串、图形和张量值。AttributeProto必须包含name字段,并且仅包含以下内容字段中的一个,有效地强制执行等效的C/C++联合。
- class onnx.AttributeProto¶
FunctionProto¶
这定义了一个函数。它不是一个模型,但可用于定义模型中使用的自定义操作符。
- class onnx.FunctionProto¶
GraphProto¶
这定义了一个图或一组节点,例如从循环或测试中调用。图定义了模型的计算逻辑,并且由形成有向无环图的参数化节点列表组成,这些节点基于其输入和输出。这相当于许多深度学习框架中的网络或图。
- class onnx.GraphProto¶
MapProto¶
这定义了一个映射或字典。它指定了一个关联表,由键和值定义。MapProto由键(类型为INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64或STRING)和值(类型为TENSOR、SPARSE_TENSOR、SEQUENCE或MAP)的重复字段组成。在MapProto的实例化过程中,键类型和值类型必须保持相同。
- class onnx.MapProto¶
ModelProto¶
这定义了一个模型。即每个转换库在转换机器学习模型后返回的类型。ModelProto是用于捆绑ML模型并将其计算图与元数据关联的顶级文件/容器格式。模型的语义由关联的GraphProto描述。
- class onnx.ModelProto¶
NodeProto¶
这定义了一个操作符。模型是数学函数的组合,每个函数都表示为一个onnx操作符,存储在NodeProto中。计算图由节点的DAG组成,这些节点表示机器学习框架中通常称为层或管道阶段的内容。例如,它可以是类型为Conv的节点,它接收图像、过滤器张量和偏差张量,并生成卷积输出。
- class onnx.NodeProto¶
OperatorProto¶
此类很少被用户使用。OperatorProto表示操作符签名和语义的不可变规范。操作符被声明为OperatorSet的一部分,OperatorSet也定义了该集合的域名。操作符由三部分标识符(domain、op_type、since_version)唯一标识,其中
domain是包含此操作符规范的操作符集的域名。
op_type是NodeProto.op_type引用的操作符名称。
since_version是最初在此操作符中声明此操作符的操作符集的版本。
- class onnx.OperatorProto¶
OperatorSetIdProto¶
这是类ModelProto的属性opset_import
的类型。此属性指定模型中使用的操作符版本。每个操作符或节点都属于一个域名。同一域名的所有操作符共享相同的版本。
- class onnx.OperatorSetIdProto¶
OperatorSetProto¶
OperatorSetProto表示一组不可变的操作符规范的不可变集合。该集合的域名(OperatorSetProto.domain)是一个反向DNS名称,用于区分独立实体定义的操作符集。该集合的版本(opset_version)是一个单调递增的整数,指示操作符集成员资格的变化。操作符集由两部分标识符(domain、opset_version)唯一标识,例如ModelProto,OperatorSetProto旨在作为顶级文件/线格式,因此除了操作符集信息外,还具有标准格式标头。
- class onnx.OperatorSetProto¶
OptionalProto¶
模型的一些输入或输出是可选的。在这种情况下必须使用此类。OptionalProto类的实例可能包含或不包含TensorProto、SparseTensorProto、SequenceProto、MapProto和OptionalProto类型的实例。
- class onnx.OptionalProto¶
SequenceProto¶
这定义了一个密集的、有序的、同构类型元素集合。序列可以由张量、映射或序列构成。如果一个序列由张量构成,则这些张量必须具有相同的元素类型(例如 int32)。在某些情况下,序列中的张量可以具有不同的形状。张量是否可以具有不同的形状取决于与相应的 ValueInfo
关联的类型/形状。例如,Sequence<Tensor<float, [M,N]>
表示所有张量都具有相同的形状。但是,Sequence<Tensor<float, [omitted,omitted]>
表示它们可以具有不同的形状(所有秩为 2),其中 omitted 表示相应的维度没有符号/常数值。最后,Sequence<Tensor<float, omitted>>
表示不同的张量可以具有不同的秩,当从张量类型中省略 shape 本身时。有关更完整的描述,请参阅 静态张量形状。
- class onnx.SequenceProto¶
SparseTensorProto¶
这定义了一个稀疏张量。非默认值的序列被编码为形状为 [NNZ]
的张量。对于数值张量,默认值为零;对于字符串张量,默认值为空字符串。values 必须具有一个非空的名称,当在 sparse_initializer 列表中使用时,该名称用作 SparseTensorProto 的名称。
- class onnx.SparseTensorProto¶
StringStringEntryProto¶
这相当于一对字符串。这用于在 ModelProto 中存储元数据。
- class onnx.StringStringEntryProto¶
TensorProto¶
这定义了一个张量。一个张量由形状(参见 ShapeProto)、元素类型(参见 TypeProto)和元素本身完整描述。所有可用类型都列在 onnx.mapping 中。
TensorShapeProto¶
这定义了张量或稀疏张量的形状。它是一个维度的列表。维度可以是整数值或符号变量。符号变量表示未知维度。
TrainingInfoProto¶
TrainingInfoProto 存储用于训练模型的信息。特别是,这定义了两个功能:初始化步骤和训练算法步骤。初始化将模型重置回其原始状态,就像没有执行任何训练一样。训练算法根据输入数据改进模型。初始化步骤的语义是,ModelProto.graph 和 TrainingInfoProto.algorithm 中的初始化器首先根据图中指定的初始化器进行初始化,然后在 ModelProto.training_info 中的每个实例中由 initialization_binding 更新。字段 algorithm 定义了一个计算图,该图表示训练算法的步骤。在执行 TrainingInfoProto.algorithm 后,由 update_binding 指定的初始化器可能会立即更新。如果目标训练算法包含连续的更新步骤(例如块坐标下降方法),则用户需要为每个步骤创建一个 TrainingInfoProto。
- class onnx.TrainingInfoProto¶
TypeProto¶
这定义了张量的类型,它由元素类型和形状 (ShapeProto) 组成。
ValueInfoProto¶
这定义了 GraphProto 的输入或输出类型。它包含一个名称、一个类型 (TypeProto) 和一个文档字符串。
- class onnx.ValueInfoProto¶