Protos¶
这些结构是用protobuf在文件onnx/*.proto中定义的。
建议使用模块onnx.helper中的函数来创建它们,而不是直接实例化它们。
每个结构都可以用函数print打印,并以json字符串的形式呈现。
AttributeProto¶
此类用于定义由NodeProto自身定义的运算符的属性。它是一个命名的属性,包含单一的浮点数、整数、字符串、图和张量值,或重复的浮点数、整数、字符串、图和张量值。AttributeProto必须包含名称字段,并且只能包含以下内容字段中的一个,实际上强制实现了C/C++联合体的等价。
- class onnx.AttributeProto¶
函数原型¶
这定义了一个函数。它不是一个模型,但可以用来定义模型中使用的自定义操作符。
- 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 是一个用于捆绑机器学习模型并将其计算图与元数据关联的顶级文件/容器格式。 模型的语义由关联的 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)是一个单调递增的整数, 表示操作符集合成员的变化。 操作符集合通过两部分标识符(域,opset_version)唯一标识。 与ModelProto类似,OperatorSetProto 旨在作为顶级文件/线格式, 因此除了操作符集合信息外,还具有标准格式头。
- class onnx.OperatorSetProto¶
OptionalProto¶
模型的某些输入或输出是可选的。在这种情况下必须使用此类。OptionalProto类的实例可能包含或不包含TensorProto、SparseTensorProto、SequenceProto、MapProto和OptionalProto类型的实例。
- class onnx.OptionalProto¶
SequenceProto¶
这定义了一个密集的、有序的、由同类型元素组成的集合。
序列可以由张量、映射或序列组成。
如果序列由张量组成,则张量必须具有相同的元素类型(例如int32)。在某些情况下,序列中的张量可以具有不同的形状。张量是否可以具有不同的形状取决于与相应ValueInfo关联的类型/形状。例如,
Sequence 表示所有张量具有相同的形状。然而,
Sequence 表示它们可以具有不同的形状(所有都是2阶),其中omitted表示相应的维度没有符号/常数值。最后,Sequence 表示不同的张量可以具有不同的阶数,当张量类型中省略了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¶