1. 程式人生 > >Python + Graphviz 繪製神經網路結構圖

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程式碼如下,可根據實際需求修改:

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