Python + Graphviz 绘制神经网络结构图

来源:互联网 发布:c语言 函数式编程 编辑:程序博客网 时间:2024/06/05 03:04

Python + Graphviz绘制神经网络结构图

大家在网上经常能够看到绘制精美的网络节点图形,但这些图形往往有大量节点和连线,如果使用所见即所得的绘图工具(比如微软的visio)往往需要花费大量时间来添加节点,调整布局。Graphviz是款非常好的基于脚本语言([dot](http://www.graphviz.org/pdf/dotguide.pdf),[中文](http://www.jianshu.com/p/5b02445eca1d))的绘图工具,能很好的避免浪费时间在布局调整上,让人把精力更多的集中在绘图逻辑上。但针对节点较多的网络,不可避免需要投入大量尽量来写重复的脚本代码。这里,我为大家用python编写了一个简单的dot脚本生成工具(MakeNN),可以很方便的输入参数生成nn结构图。在使用本工具之前,需要确保你的电脑已经正常配置了[python](http://blog.csdn.net/yanzi1225627/article/details/19575437)及[graphviz](http://liyanrui.is-programmer.com/posts/6261.html)开发环境。(windows的python开发环境配置)

python源码下载:https://github.com/rtygbwwwerr/MakeNN1
下图是绘制结果:
这里写图片描述

对应的python代码如下,可根据实际需求修改:

def makeDefConfig():    args = dict()    #path    path = sys.argv[0]    if isWindowsSystem():        last = path.rindex('\\')    else:        last = path.rindex('/')    path = path[0:last+1]    args.update({'input':path + 'nn.gv'})    args.update({'output':path + 'nn.png'})    #visual nodes number    args.update({'visual_num':10})    #layers config:(name,nodes number,color)    args.update({'layers_cfg':(('input',10,'blue4'),('h1',7,'red2'),('h2',5,'red2'),('h3',4,'red2'),('out',2,'seagreen2'))})    layers = args['layers_cfg']    args.update({'layers_num':len(layers)})    #connects:layer_i->lay_j    args.update({'connects':([0,1],[1,2],[2,3],[3,4])})    return args
0 0