[深度学习主流框架解析一] Onnx

本文深入探讨ONNX模型文件解析,重点介绍了ONNX如何使用protobuf协议,包括onnx.proto、onnx-operators.proto、onnx-ml.proto和onnx-data.proto等多个proto文件的相互关系。模型的顶层结构由ModelProto定义,OperatorProto和OperatorSetProto则定义了运算符参数。此外,onnx-data.proto扩展了基础数据类型。通过对这些proto文件的理解,可以更好地解析和理解ONNX模型文件。

[深度学习主流框架解析一] Onnx

1、模型文件协议解析

Onnx同样也是采用了Protobuf协议进行模型文件的整体构建,与Caffe相比,Onnx使用了多proto文件描述模型。因此,解析Onnx模型文件需要了解多个proto文件之间的关联。

总共的proto文件如下所示:

  • onnx-data.proto
  • onnx-ml.proto
  • onnx-operators.proto
  • onnx-operators-ml.proto
  • onnx.proto

proto文件之间的依赖关系如下所示:

onnx.proto
onnx-operators.proto
onnx-ml.proto
onnx-data.proto
onnx-operators-ml.proto
1.1、onnx.proto说明

整体的模型文件可见下图。

在这里插入图片描述

相关的特性如下所示:

  • ModelProto是模型的最顶端的定义结构
  • 没有定义具体的特定类型的网络层结构,使用NodeProto中的attribute统一定义了各类网络层
1.2、onnx-operators.proto说明

主要定义了OperatorProto和OperatorSetProto这两种消息类型,用于传递特定版本的和具体类型的网络层算子参数

1.3、onnx-ml.proto和onnx-operators-ml.proto说明

onnx-ml.proto等同于onnx.proto
onnx-operators-ml.proto等同于onnx-operators.proto
内部内容基本一致

1.4、onnx-data.proto说明
  • 增加了SequenceProto、MapProto等基础的数据类型
  • 增加了OptionalProto去包含所有的特殊的数据类型
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值