[深度学习主流框架解析一] 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文件之间的依赖关系如下所示:

#mermaid-svg-lo1rMhf2hypVwSNL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lo1rMhf2hypVwSNL .error-icon{fill:#552222;}#mermaid-svg-lo1rMhf2hypVwSNL .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lo1rMhf2hypVwSNL .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-lo1rMhf2hypVwSNL .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lo1rMhf2hypVwSNL .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lo1rMhf2hypVwSNL .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lo1rMhf2hypVwSNL .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lo1rMhf2hypVwSNL .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lo1rMhf2hypVwSNL .marker.cross{stroke:#333333;}#mermaid-svg-lo1rMhf2hypVwSNL svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lo1rMhf2hypVwSNL .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-lo1rMhf2hypVwSNL .cluster-label text{fill:#333;}#mermaid-svg-lo1rMhf2hypVwSNL .cluster-label span{color:#333;}#mermaid-svg-lo1rMhf2hypVwSNL .label text,#mermaid-svg-lo1rMhf2hypVwSNL span{fill:#333;color:#333;}#mermaid-svg-lo1rMhf2hypVwSNL .node rect,#mermaid-svg-lo1rMhf2hypVwSNL .node circle,#mermaid-svg-lo1rMhf2hypVwSNL .node ellipse,#mermaid-svg-lo1rMhf2hypVwSNL .node polygon,#mermaid-svg-lo1rMhf2hypVwSNL .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lo1rMhf2hypVwSNL .node .label{text-align:center;}#mermaid-svg-lo1rMhf2hypVwSNL .node.clickable{cursor:pointer;}#mermaid-svg-lo1rMhf2hypVwSNL .arrowheadPath{fill:#333333;}#mermaid-svg-lo1rMhf2hypVwSNL .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lo1rMhf2hypVwSNL .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lo1rMhf2hypVwSNL .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-lo1rMhf2hypVwSNL .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-lo1rMhf2hypVwSNL .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lo1rMhf2hypVwSNL .cluster text{fill:#333;}#mermaid-svg-lo1rMhf2hypVwSNL .cluster span{color:#333;}#mermaid-svg-lo1rMhf2hypVwSNL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lo1rMhf2hypVwSNL :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

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去包含所有的特殊的数据类型

[深度学习主流框架解析一] Onnx相关推荐

  1. [深度学习主流框架解析一] Caffe

    [深度学习主流框架解析一] Caffe 1.模型文件协议解析 重点解析caffe.proto模型文件中的内容,整体的模型文件可见下图. 模型结构相关特性: 含有训练和测试推理的开关和相关的必要参数 不 ...

  2. 深度学习主流框架介绍(PyTorch、TensorFlow、Keras、Caffe、Theano、MXNET)

    深度学习主流框架介绍(PyTorch.TensorFlow.Keras.Caffe.Theano.MXNET) 1.Theano Theano是最早的深度学习框架之一,由 Yoshua Bengio ...

  3. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要的是,它将深度学习的每一个细节都原原本本地展现出来,大大 ...

  4. 怎样快速掌握深度学习TensorFlow框架?

    TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理. Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,T ...

  5. 【github干货】主流深度学习开源框架从入门到熟练

    文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...

  6. 深度学习推理框架调研总结

    深度学习推理框架 作者介绍 1.移动端深度学习推理框架调研 1.1 小米的MACE(2017) 1.2 阿里的MNN 1.3 腾讯的TNN 1.4 ARM的tengine 1.5 百度的paddle- ...

  7. 深度学习计算框架综述(二)计算框架的组成与设计要点

    本章主要介绍一个通用计算框架主要包含哪几个模块,以及这些模块的设计要点,建议大家阅读本章前,了解一下Protocol Buffer 以及 FlatBuffer 的概念及基本用法. 首先,我们先分析一下 ...

  8. 腾讯优图开源深度学习推理框架 TNN,助力 AI 开发降本增效

    从学界到工业界,"开源"已经成为AI领域的一个关键词.一方面,它以"授人以渔"的方式为AI构建了一个开放共进的生态环境,帮助行业加速AI应用落地:另一方面,在解 ...

  9. AI学习笔记(九)从零开始训练神经网络、深度学习开源框架

    AI学习笔记之从零开始训练神经网络.深度学习开源框架 从零开始训练神经网络 构建网络的基本框架 启动训练网络并测试数据 深度学习开源框架 深度学习框架 组件--张量 组件--基于张量的各种操作 组件- ...

最新文章

  1. 【忘川风华录】交互负责人:在奇幻和萌趣中探索国风的立体体验
  2. python基础-2
  3. [指数型生成函数专练]chocolate,红色病毒问题,排列组合,字串数
  4. swing皮肤包 substance
  5. 如何实现共享软件网络授权认证,包括注册新用户、登录、修改密码等操作
  6. 下载丨OGG实战项目总结
  7. 怎么看tomcat添加的项目名_Tomcat部署项目不加项目名访问,不加8080访问
  8. R语言重抽样与自助法
  9. 爱奇艺Android移动客户端app瘦身经验
  10. Linux局域网传输文件
  11. Java精品源码第83期在线旅游网站系统(推荐)
  12. 私藏了好几年的20个谷歌搜索技巧
  13. 关于汽车人转型,“正能量”故事看腻了,今天来一篇“负能量”的
  14. Mysql,姓名按笔画排序
  15. css如何选择同一个class下的第一个div?
  16. Cased by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.SettableFuture
  17. 解决 raise ReadTimeoutError(self._pool, None, ‘Read timed out.‘)
  18. php支持连接sql server数据库
  19. python:凯撒密码
  20. ie8视频播放器兼容

热门文章

  1. c# 反射的使用场景
  2. onenote不同电脑相同用户名同步问题
  3. Vue本地引用Iconfont(阿里巴巴图标库) SVG及普通图标
  4. 3G之殇:龙旗平安夜裁掉TD手机设计团队
  5. 牛客网_数量关系选择题
  6. 恶意代码分析_00_入手资料
  7. python爬取有声小说_听说还有付费听书的朋友,用python带你爬取喜马拉雅有声小说...
  8. WebRTC基础实践 - 1. WebRTC简介
  9. Linux环境使用阿里云短信服务报错
  10. 使用鼎阳科技SDS2074X Plus示波器的波特图功能求RC滤波器的频率响应