前言
做了神经网络这么久,偶尔想画一下自己模型的架构图,但是又无从下手,因为网络一般都比较复杂,如果自己手动利用Visio画的画又比较麻烦,而我又比较懒,网上搜了一下Graphviz
画图工具,学了会便开始打算利用它来画模型结构图。
关于Graphviz的介绍,可以参考我的前两篇博客:
dot画神经网络图
简单神经网络
digraph G {
rankdir=LR;
splines=line;
nodesep=.1;
node [label=""];
subgraph cluster_0 {
color=white;
node [style=solid,color=green,shape=circle];
i;
label = "Input Layer";
}
subgraph cluster_1 {
color=white;
node [style=solid,color=blue, shape=circle];
h11, h12, h13, h14;
label = "Hidden Layer 1";
}
subgraph cluster_2 {
color=white;
node [style=solid,color=blue, shape=circle];
h21, h22;
label = "Hidden Layer 2";
}
subgraph cluster_3 {
color=white;
node [style=solid,color=red, shape=circle];
o;
label="Output Layer";
}
i -> h11
i -> h12
i -> h13
i -> h14
h11 -> h21
h11 -> h22
h12 -> h21
h12 -> h22
h13 -> h21
h13 -> h22
h14 -> h21
h14 -> h22
h21 -> o
h22 -> o
}
这里我们定义了一个图G
,及四个子图cluster_0
、cluster_1
、cluster_2
、cluster_ 3
,并为每个子图定义了结点类node
及其各自属性,由于神经网络是全连接,因此我们需要为每一个结点连上边(十分繁琐)。
将其保存为demo.dot
文件,通过命令:
dot -Tpng demo.dot -o demo.png
将其转化为png图片,如下所示:
好了,这样就画好了一个简单的神经网络模型图了,但是当你遇上结点较多的情况怎么办?
你可能会说,我又不傻,难道一个个在d