使用GraphViz画caffe/torch的网络结构图

caffe的Python接口中有一个很不错的功能:画网络结构图,虽然画得并不好看,但可以给人一种直观的感受。

一、准备

  首先caffe的Python接口当然是必备的了,还没有生成python接口的同学可以参照我的上一篇博客来生成。 
  然后是需要安装protobuf的python接口,可以参照这篇博客进行安装,安装过程比较简单,就不赘述了。 
  安装GraphViz:http://www.graphviz.org/。 
  安装pydot,可以使用pip install pydot来安装,但最近这个功能好像不太稳定(GFW,你懂的),大家可以从https://github.com/nlhepler/pydot 下载,这里需要修改一下pydot/__init__.py文件中,第596行: 

path = os.path.join(os.environ['PROGRAMFILES'], 'ATT', 'GraphViz', 'bin') 

  改为: 

path = r"C:\Program Files (x86)\Graphviz2.37\bin" 

  同样,下边的那个path也改为r”C:\Program Files (x86)\Graphviz2.37\bin”,如果你将GraphViz安装在别的位置,那这个目录也要跟着改变。

二、生成网络结构图

  把环境配置好之后,就可以在命令行中输入 
   python draw_net.py ..\examples\mnist\lenet_train_test.prototxt 1.bmp 
   就可以看到在当前目录下生成了一张图片: 
   lenet的网络结构


torch reference:

Let's have a look:

-- some handy models are defined in optnet.models
-- like alexnet, googlenet, vgg and resnet
models = require 'optnet.models'
modelname = 'googlenet'
net, input = models[modelname]()

generateGraph = require 'optnet.graphgen'

-- visual properties of the generated graph
-- follows graphviz attributes
graphOpts = {
displayProps =  {shape='ellipse',fontsize=14, style='solid'},
nodeData = function(oldData, tensor)
  return oldData .. '\n' .. 'Size: '.. tensor:numel()
end
}

g = generateGraph(net, input, graphOpts)

graph.dot(g,modelname,modelname)

This generates the following graph:

GoogleNet without memory optimization


https://github.com/DmitryUlyanov/optimize-net

DmitryUlyanov/optimize-net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值