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
就可以看到在当前目录下生成了一张图片:
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: