ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ONNX格式解析之google protobuf解析

2021-10-02 10:00:27  阅读:482  来源: 互联网

标签:int32 google protobuf ONNX 模型 onnx 格式 解析


ONNX模型是按照google protobuf格式保存的,模型训练的目的就是为了得到变量的权值,只不过是纯数字罢了,但是我们也不能就这样把这些数字一个一个地写入文件,因为在要保存的模型文件里,不光要保存权值,也要告诉之后用这个模型的人,模型结构是怎么样的,所以需要合理地设计保存文件的格式。不同的机器学习框架都有自己的模型保存格式,例如 Keras 的模型格式是 h5,而 Tensorflow 和 onnx 的保存格式就是 protobuf。

其实 protobuf 使用起来非常简单方便,就是自己先定义一个数据保存格式,然后用 protoc 自动生成各个语言的解析代码,现在支持 C, C++, C#, Java, Javascript, Objective-C, PHP, Python, Ruby。

举个例子,我们创建这么个文件 amessage.proto

syntax = "proto3";

message AMessage {
  int32 a=1; 
  int32 b=2;
}

那么我们就定义了一种二进制的数据存储格式,里面包含 2 个数字,其中 a = 1,代表 id 为 1 的数据是个 int32 类型,它的名字是 a,并不是代表 a 这个变量数值是 1,同样的道理,id 为 2 的数据是个 int32 类型,它的名字是 b。这里 id 是不能重复的。

所以使用 protobuf 需要先定义一个数据格式,然后自动生成 编码 和 解码 的代码,供不同语言使用,因为能自动生成代码,所以 protobuf 简单好用,非常受欢迎,建议大家使用 protov3。

为了帮助我们更加直观的看到模型结构,这里推荐一个工具 protobuf editor,可以很方便地解析 protobuf 文件,它的下载地址是

ProtoBufEditor download | SourceForge.nethttps://sourceforge.net/projects/protobufeditor/软件下载下来后,按照下面的流程就可以解析之前我们生产的 mnist.onnx 文件了, onnx.proto3格式的定义可以在这里下载:

onnx/onnx.proto3 at master · onnx/onnx · GitHub

protobuf安装环境需要事先安装jre环境,安装成功的界面如下所示:

解析mnist模型:

将模型文件和模型protobuf描述所在位置设置给proto buffer editor工具,开始解析:


结束!

标签:int32,google,protobuf,ONNX,模型,onnx,格式,解析
来源: https://blog.csdn.net/tugouxp/article/details/120583308

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有