如何用Graphviz以及DotNet绘制神经网络图

说在前面

最近需要画一个BP神经网络的图,我平时用visio画图的,但总觉得这么经典的东西网上应该有吧。经过我一番简单暴力的百度搜索,大致找到了以下几种方式:
1)python的库viznet
我本身对py也不熟悉,就看了一下py画的图
如何用Graphviz以及DotNet绘制神经网络图_第1张图片
倒也觉得挺好看的,就作为备选吧
2)NNSVG
查看在 http://alexlenail.me/NN-SVG/index.html
如何用Graphviz以及DotNet绘制神经网络图_第2张图片
图不错,可操作性也强,而且不是啥软件啊,程序啊,就只是个网页,可以手动调节参数的网页,很方便,连卷积神经网络也能画
如何用Graphviz以及DotNet绘制神经网络图_第3张图片
但我觉得够花哨的,不是我暂时需要的简洁版
3)Matlab
查看在 http://www.mathworks.com/help/nnet/ref/view.html
如何用Graphviz以及DotNet绘制神经网络图_第4张图片
看到这图,我只想说何必呢
4)Graphviz
查看在http://www.graphviz.org/
如何用Graphviz以及DotNet绘制神经网络图_第5张图片
图很不错,简洁实用,稍微搭配下颜色肯定不错,就是基于DOT语言脚本的,这是让我学习一种新的语言?不得不说,有点麻烦啦,要是有认能根据我的想法把DOT语言代码给我写好还差不多。
5)dotnets
查看在 https://github.com/martisak/dotnets
如何用Graphviz以及DotNet绘制神经网络图_第6张图片
这图绝了呀,作图简洁,配色清淡,关键是前馈神经网络,就妥妥的为我想画的BP设计的啊。dotnets提供python代码生成DOT语言代码,直接用Graphviz中的dot作图。
万万没想到,我选择了最麻烦的方式。

关于Graphviz

graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。可以在 https://graphviz.org/download/ 下载。大概的意思就是根据DOT语言脚本画图。

波折的画图之旅

1)在这 https://github.com/martisak/dotnets下载py代码。代码的第一行为layers = [4, 5, 5, 5, 2],第一个4代表四个神经元输入,最后的2代表两个神经元输出,中间的代表隐含层5, 5, 5代表三层5个神经元的隐含层。运行之后
如何用Graphviz以及DotNet绘制神经网络图_第7张图片
会打印如上图代码开头的一串所谓的DOT语言脚本,然后复制到一个.txt文档中,比如复制到file.txt中。第一行fontname = "Hilda 10"是设置字体的,这字体听都没听过,最好把这一行删了,免得报错。
2)下载并安装Graphviz, https://graphviz.org/download/
3)在保存file.txt的文件夹中调用cmd,试试dot -version这个命令,大概率会得到下面的提示
在这里插入图片描述
dot是Graphviz的命令行工具,既然已经安装了Graphviz,那dot也应该是存在的,如果不存在呢,路径没添加呗,因此需要添加路径,此处可以参考 博客。如果你成功的添加了环境变量,就在cmd里面再试试dot -version这个命令。反正我失败了,系统总是把我添加的路径删除了,不知道是不是权限的问题。既然添加不了永久的环境变量,那就添加临时的,在cmd运行set path=D:\Graphviz\bin,这里的D:\Graphviz\bin是我的dot安装目录,参考 博客1和 博客2
然后在cmd里面再试试dot -version命令,成功如何用Graphviz以及DotNet绘制神经网络图_第8张图片
4)设置了环境变量之后,紧接着在cmd运行dot -Tpdf -O file.txt 然后得到一个名为file.txt.pdf的文件,如果想要png格式的文件,那就dot -Tpng -O file.txt,实际上支持 bmp eps gif jpg png ps svg pdf等等格式。
5)得到的pdf如下
如何用Graphviz以及DotNet绘制神经网络图_第9张图片

说在后面

如果没有Graphviz,甚至连python都没有,为了画个图装两软件,确实有点麻烦。不过,如果已经有python了,再根据我的步骤来,倒也会挺快的。你要是觉得麻烦,或者你的需求并不是一个简洁的前馈神经网络,不如试试其他方法呢。顺便给个Graphviz的配色图。
如何用Graphviz以及DotNet绘制神经网络图_第10张图片

你可能感兴趣的:(graphviz,python,神经网络)