搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小丑西瓜9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
小白入门机器学习必学案例分享。_机器学习入门案例
2
C1认证学习笔记(第一章)_c1笔记
3
RFCN详解
4
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
5
最近,又发现了Pandas中三个好用的函数
6
C#操作IIS程序池及站点的创建配置实现代码
7
用通俗易懂的方式讲解:Stable Diffusion WebUI 从零基础到入门_stablediffusion.web
8
GooglePlay应用上架流程_个人上架谷歌商店需要资质吗
9
SQL Server 条件语句全值匹配空格处理_sql server 在匹配的时候忽略空格
10
linux进入uvc目录,Linux USB摄像头使用
当前位置:
article
> 正文
ONNX--学习笔记_onnx权重文件和配置文件
作者:小丑西瓜9 | 2024-03-22 03:14:31
赞
踩
onnx权重文件和配置文件
开放神经网络交换,提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境,平台均无关的标准格式,来增强各种AI模型的可交互性。即无论使用何种训练框架训练模型(比如TensorFlow/Pytorch/OneFlow/Paddle),在训练完毕后都可以将这些框架的模型统一转换为ONNX这种统一的格式进行存储。注意ONNX文件不仅仅存储了神经网络模型的权重,同时也存储了模型的结构信息以及网络中每一层的输入输出和一些其它的辅助信息。
在获得ONNX模型之后,模型部署人员自然就可以将这个模型部署到兼容ONNX的运行环境中去。这里一般还会设计到额外的模型转换工作,典型的比如在Android端利用NCNN部署ONNX格式模型,那么就需要将ONNX利用NCNN的转换工具转换到NCNN所支持的bin和param格式。
ONNX作为一个文件格式,自然需要一定的规则去读取想要的信息或者是写入需要保存信息。ONNX使用的是
Protobuf
这个序列化数据结构去存储神经网络的权重信息。
Protobuf:
是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API(摘自官方介绍)。
Protobuf协议是一个以*.proto后缀文件为基础的,这个文件描述了用户自定义的数据结构。自然onnx.proto就是ONNX格式文件了,在这个文件里面以message关键字开头的对象是需要关心的。最核心的几个对象:
ModelProto
GraphProto
NodeProto
ValueInfoProto
TensorProto
AttributeProto
当加载了一个ONNX之后,获得的就是一个ModelProto,它包含了一些版本信息,生产者信息和一个GraphProto。在GraphProto里面又包含了四个repeated数组,它们分别是node(NodeProto类型),input(ValueInfoProto类型),output(ValueInfoProto类型)和initializer(TensorProto类型),其中node中存放了模型中所有的计算节点,input存放了模型的输入节点,output存放了模型中所有的输出节点,initializer存放了模型的所有权重参数。
ONNX的每个计算节点都会有input和output两个数组,这两个数组是string类型,通过input和output的指向关系,可以利用上述信息快速构建出一个深度学习模型的拓扑图。这里要注意一下,GraphProto中的input数组不仅包含一般理解中的图片输入的那个节点,还包含了模型中所有的权重。例如,Conv层里面的W权重实体是保存在initializer中的,那么相应的会有一个同名的输入在input中,其背后的逻辑应该是把权重也看成模型的输入,并通过initializer中的权重实体来对这个输入做初始化,即一个赋值的过程。
最后,每个计算节点中还包含了一个AttributeProto数组,用来描述该节点的属性,比如Conv节点或者说卷积层的属性包含group,pad,strides等等
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小丑西瓜9/article/detail/284910
推荐阅读
article
C#
danbooru
Stable
Diffusion 提示词反推
Onnx
Demo
...
C#
danbooru
Stable
Diffusion 提示词反推
Onnx
Demo
C#
danbooru
Stab...
赞
踩
article
HarmonyOS
入门|
ArkTS
工程
目录结构_
arkts
工程
目录结构
配置文件
...
HarmonyOS
入门|
ArkTS
工程
目录结构是关于使用
ArkTS
语言开发
HarmonyOS
工程
模块的指南,包括ets源...
赞
踩
article
docker
配置文件
:/etc/
docker
/
daemon
.
json
...
因为工作的需要,需要把
docker
启动后的路径改成/data,所以就会用到:/etc/
docker
/
daemon
.js...
赞
踩
article
docker
部署项目详解(
配置
文件
、
log
日志
、图片
文件
挂载
、容器与宿主机同步时间)_
docker
...
docker
项目发布详解(
配置
文件
、
log
日志
、图片
文件
挂载
、容器与宿主机同步时间)1、打包springboot项目为j...
赞
踩
article
docker
file 部署
springboot
并挂载
配置文件
_
springboot
docker
配...
1.准备好构建镜像需要的文件文件地址/home/latticy/conf 存放application.yml2.编写 D...
赞
踩
相关标签
c#
stable diffusion
开发语言
算法
开源
华为
docker
linux
java
spring boot