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

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 + Graphviz 绘制神经网络结构图_第1张图片

对应的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

你可能感兴趣的:(Python + Graphviz 绘制神经网络结构图)