使用
import onnx
print(dir(onnx))
可以查看 onnx 包的主要内容,记录
通过 dir(onnx)
所能看到的 所有模块、类和函数。这些内容构成了 ONNX(Open Neural Network Exchange)的核心数据结构、工具函数和模型操作接口。
📘 ONNX 模块组成详解
下面是对这些主要组件的分类与功能介绍:
🔹 1. 核心 Proto 类型(Protobuf 数据结构)
这些是 ONNX 使用 Protocol Buffers 定义的核心数据结构,用于描述模型的各个部分。
名称 | 功能 |
---|
ModelProto | 表示整个 ONNX 模型 |
GraphProto | 计算图,包含输入、输出、节点、初始化器等 |
NodeProto | 图中的一个节点(操作),如 Conv、Relu |
TensorProto | 张量数据(权重、偏置等) |
ValueInfoProto | 输入/输出张量的信息(名称、类型、形状) |
FunctionProto | 自定义函数 |
OperatorSetIdProto | 算子集合 ID(版本控制) |
OperatorProto | 算子信息(名字、状态等) |
TypeProto | 类型信息(Tensor, Sequence, Map 等) |
SparseTensorProto | 稀疏张量支持 |
SequenceProto | 序列张量 |
MapProto | 键值对映射 |
🔹 2. 属性与配置类
名称 | 功能 |
---|
AttributeProto | 节点的属性(如卷积核大小、步长等) |
DeviceConfigurationProto | 设备配置 |
NodeDeviceConfigurationProto | 节点级设备配置 |
ShardingSpecProto , ShardedDimProto , SimpleShardedDimProto | 分片维度相关(分布式训练) |
OptionalProto | 可选字段支持 |
IntIntListEntryProto , StringStringEntryProto | 字典项结构 |
🔹 3. 常量与版本定义
名称 | 功能 |
---|
IR_VERSION | 当前 IR 版本号 |
IR_VERSION_2017_10_10 , IR_VERSION_2024_3_25 | 不同时间点的 IR 版本标记 |
STABLE , EXPERIMENTAL | 算子稳定性标志 |
ONNX_ML | 标识是否为 ONNX-ML 子集 |
🔹 4. 主要功能模块
这些是 onnx
提供的主要 Python API 模块或函数。
名称 | 功能 |
---|
checker | 验证模型合法性(如 onnx.checker.check_model() ) |
helper | 辅助构建模型(创建节点、图、模型等) |
numpy_helper | 在 NumPy 数组和 TensorProto 之间转换 |
load , save | 加载和保存模型文件 |
load_model , save_model | 更高级的模型加载/保存方式 |
shape_inference | 推理张量形状(自动推断各层输出形状) |
version_converter | 模型版本转换(升级到新 IR 版本) |
external_data_helper | 处理外部存储的大张量数据 |
compose | 组合多个模型或子图 |
parser , printer | 解析或打印 ONNX 模型(如文本格式) |
utils | 实用工具函数 |
mapping | 数据类型映射表(如 float -> TensorProto.FLOAT) |
hub | ONNX 模型中心相关功能(类似 PyTorch Hub) |
convert_model_to_external_data | 将大模型转为使用外部数据存储 |
🔹 5. 其他实用工具与内部类
名称 | 功能 |
---|
_get_serializer , _load_bytes , _save_bytes | 内部序列化工具 |
_custom_element_types | 自定义元素类型支持 |
_DEFAULT_FORMAT , _SupportedFormat | 序列化格式设置 |
__version__ | 获取当前 ONNX 包版本 |
__doc__ , __file__ , __name__ | Python 模块元信息 |
🔹 6. 实验性或扩展模块
名称 | 功能 |
---|
subbyte | 支持 sub-byte 数据压缩 |
typing | 类型注解支持 |
annotations | 注释信息支持 |
TrainingInfoProto | 训练信息记录(如优化器状态) |
TensorAnnotation | 张量注释(调试用) |
✅ 示例:常用 API 快速参考
import onnx
model = onnx.load("model.onnx")
onnx.checker.check_model(model)
print(onnx.helper.printable_graph(model.graph))
inferred_model = onnx.shape_inference.infer_shapes(model)
onnx.save(inferred_model, "inferred_model.onnx")
📌 总结
类别 | 关键组件 | 用途 |
---|
数据结构 | ModelProto, GraphProto, NodeProto, TensorProto | 构建模型结构 |
工具函数 | helper, numpy_helper, checker | 创建、验证、转换模型 |
模型处理 | load, save, shape_inference, version_converter | 加载、保存、推理形状、版本迁移 |
扩展支持 | external_data_helper, subbyte, hub | 大模型支持、压缩、模型分发 |