Caffe学习系列——工具篇:神经网络模型结构可视化
在Caffe中,目前有两种可视化prototxt格式网络结构的方法:
- 使用Netscope在线可视化
- 使用Caffe提供的draw_net.py
本文将就这两种方法加以介绍
1. Netscope:支持Caffe的神经网络结构在线可视化工具
Netscope是个支持prototxt格式描述的神经网络结构的在线可视工具,网址:
http://ethereon.github.io/netscope/quickstart.html
它可以用来可视化Caffe结构里prototxt格式的网络结构,支持从GitHub Gist或者编辑器中可视化Caffe的网络结构。
使用起来也非常简单,打开这个地址:http://ethereon.github.io/netscope/#/editor
点击Launch Editor,把你的描述神经网络结构的prototxt文件复制到该编辑框里,按shift+enter,就可以直接以图形方式显示网络的结构。
比如,以mnist的LeNet网络结构为例,把Caffe中example/mnist/lenet_train_test.prototxt文件的内容复制到编译框,按shift + enter,立即就可以得到可视化的结构图。
2. 使用 python/draw_net.py绘制网络模型
Python/draw_net.py, 这个文件,就是用来绘制网络模型的。也就是将网络模型由prototxt变成一张图片。
在绘制之前,需要先安装两个库:GraphViz和pydot。 Graphviz是一个开源的可视化软件,能够以抽象的图和网络表示结构信息,广泛使用于网络,生物信息学,软件工程等领域。
1、安装GraphViz
# sudo apt-get install GraphViz
注意,这里用的是apt-get来安装,而不是pip.
2 、安装pydot
# sudo pip install pydot
用的是pip来安装,而不是apt-get
安装好了,就可以调用脚本来绘制图片了
draw_net.py执行的时候带三个参数
>
第一个参数:网络模型的prototxt文件
第二个参数:保存的图片路径及名字
第二个参数:–rankdir=x , x 有四种选项,分别是LR, RL, TB, BT 。用来表示网络的方向,分别是从左到右,从右到左,从上到小,从下到上。默认为LR。
例:绘制Lenet模型
# sudo python python/draw_net.py examples/mnist/lenet_train_test.prototxt netImage/lenet.png --rankdir=TB
- 1
- 1
3. 总结
使用Netscope绘制出的图直观简洁,易于快速了解网络模型,但是缺少层内的细节信息;
使用draw_net.py绘制出的结构图保存了参数信息,细节更丰富,但是结构不是很清晰明了,这一点在大型模型上的体现尤为明显:
Netscope SSD 300x300模型
draw_net.py SSD 300x300模型
如上图所示,对于复杂模型,Netscope能够较好地按安排各层图像的布局,使得SSD模型可视化结果更直观。缺点是博主没有找到本地化吧保存Netscope可视化结果的方法,在线查看大型模型不是很方便。
4. Reference
[1] 10km. Netscope:支持Caffe的神经网络结构在线可视化工具
http://blog.csdn.net/10km/article/details/52713027
[2] denny的学习专栏. Caffe学习系列(18): 绘制网络模型
http://www.cnblogs.com/denny402/p/5106764.html
Caffe学习系列——工具篇:神经网络模型结构可视化的更多相关文章
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...
- Caffe学习系列(3):视觉层(Vision Layers)及参数
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...
- Caffe学习系列(21):caffe图形化操作工具digits的安装与运行
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...
- Caffe学习系列(12):训练和测试自己的图片
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...
- 转 Caffe学习系列(12):训练和测试自己的图片
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...
- 转 Caffe学习系列(3):视觉层(Vision Layers)及参数
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...
- Caffe 学习系列
学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...
- Caffe学习系列(12):训练和测试自己的图片--linux平台
Caffe学习系列(12):训练和测试自己的图片 学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...
- [Android开发学iOS系列] 工具篇: Xcode使用和快捷键
[Android开发学iOS系列] 工具篇: Xcode使用和快捷键 工欲善其事必先利其器. 编辑 Cmd + N: 新建文件 Option + Cmd + N: 新建文件夹 Cmd + / : 注释 ...
随机推荐
- 类与接口(二)java的四种内部类详解
引言 内部类,嵌套在另一个类的里面,所以也称为 嵌套类; 内部类分为以下四种: 静态内部类 成员内部类 局部内部类 匿名内部类 一.静态内部类 静态内部类: 一般也称"静态嵌套类" ...
- 中断标志位 IRQF_ONESHOT
one shot本身的意思的只有一次的,结合到中断这个场景,则表示中断是一次性触发的,不能嵌套.对于primary handler,当然是不会嵌套,但是对于threaded interrupt han ...
- man -k : nothing appropriate.
➜ workplace man -k zip zip: nothing appropriate. 出现这种情况,是索引库没有建立. man 和 whatis 共用一个索引库的. 我们使用 man w ...
- Django之cookie&session
cookie Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息 ...
- 恶意代码分析_01_YARA规则_CLAMAV病毒库
写在前面的话: 上一篇文章里,我们已经初步了解了Malware的一些知识,并且利用Clamscan创建了自己的md5类型的病毒库, 那在这篇文章中,我将带领大家一起,来进一步了解病毒库的相关知识,以及 ...
- PHP 与 YAML
PHP 与 YAML 这一段时间都没有写blog,并不是因为事情多,而是自己变懒了.看到新技术也不愿意深入思考其背后的原理,学习C++语言了近一个多月,由于学习方法有问题,并没有什么项目可以练手.靠每 ...
- MongoDB基础之 用户和数据库基于角色的访问控制
mongod 关键字参数:--auth 默认值是不需要验证,即 --noauth,该参数启用用户访问权限控制:当mongod 使用该参数启动时,MongoDB会验证客户端连接的账户和密码,以确定其是否 ...
- VS 0x80041FEB
在打开from设计界面时,报错. 解决方法:将项目中Properties文件中licenses.licx删除,重新建立一个空的licenses.licx文件放到项目中. 重新打开界面,解决
- 028、HTML 标签3表单标签插入组件
内容:表单标签插入组件(经常使用)############################################################## form表单标签和input组件 < ...
- redis在.net架构中的应用(2)--并发和原子操作不可兼得
在上一篇文章中,我主要向大家介绍了利用servicestack连接redis以及一些redis的基本数据类型,传送门 本文中,我将通过一个具体应用场景为大家介绍redis中的并发和原子操作 其中用到的 ...