前言
tensorflow,pytorch,mxnet 每一个主流的深度学习框架都提供了相对应的可视化模板,那有没有一种方法更加具有通用性呢?我们会在论文中,相关文献中看到各种神经网络可视化的图形,有平面图形,三维立体图形,觉得很美观,你一定很好奇,这是不是使用绘图软件画的,还是只是用办公软件画的?对于人工智能研究者,那就太 low 了,人工智能都搞得定,还能被几幅图像给难住?本文带你一文看尽常用的一些神经网络可视化的开源项目。
前面已经介绍了小草最喜欢的一个可视化框架,netron,今天来看一下接下来的几种网络可视化途径吧!鉴于篇幅较多,本次为系列文章第二篇。
1、ConvNetDraw
这个工具可能很多人都不知道,不过如果你知道神经网络的结构,而且你能很快的写出基本的代码,那么这款软件再方便不过啦,重要的是它的绘制结果是 3D,比较好看,缺点是卷积层的颜色等比较固定,不适合进行设计。以下是有关该工具的几个有用链接。
(1)ConvNetDraw 的 github-https://github.com/cbovar/ConvNetDraw
(2)ConvNetDraw 在线绘图网址 -https://cbovar.github.io/ConvNetDraw/
2、 draw_convnet
这是一个 Python 工具,可以将代码转换为网络图显示出来。有关该工具的有用链接如下所示:
raw_convnet 的 github 链接 -https://github.com/gwding/draw_convnet
3、PlotNeuralNet
这是我偶然间寻找到的工具,基于 Latex,话不多说,直接看效果你就决定要不要使用它啦。其相关链接如下所示:
PlotNeuralNet 的 github 链接 -https://github.com/HarisIqbal88/PlotNeuralNet
4、NN-SVG
有关该软件的有用链接如下所示:
(1)N-SVG 的 github 链接 -https://github.com/zfrenchee/NN-SVG
(2)N-SVG 的在线界面 -http://alexlenail.me/NN-SVG/LeNet.html
5、Python + Graphviz
针对节点较多的网络,不可避免需要投入大量尽量来写重复的脚本代码。用 python 编写了一个简单的 dot 脚本生成工具(MakeNN),可以很方便的输入参数生成 nn 结构图。
6、Graphviz - dot
在 dot 里面 label 的玩法比较多,在上面看到的每个节点都是简单的一段文字,如果想要比较复杂的结构怎么办?那就通过编写代码生成吧。其对应的代码和结果如下所示。其相关的资源如下所示:
Graphviz 的官方链接 -https://www.graphviz.org/
7、 NetworkX
一个可以用来绘制神经网络的 python 包,其相应的资源如下所示:
1、NetworkX 文档 -https://networkx.github.io/documentation/latest/tutorial.html
2、NetworkX 的 github-https://github.com/networkx
\>>> options \= {
... 'node\_color': 'black',
... 'node\_size': 100,
... 'width': 3,
... }
\>>> plt.subplot(221)
<matplotlib.axes.\_subplots.AxesSubplot object at ...\>
\>>> nx.draw\_random(G, \*\*options)
\>>> plt.subplot(222)
<matplotlib.axes.\_subplots.AxesSubplot object at ...\>
\>>> nx.draw\_circular(G, \*\*options)
\>>> plt.subplot(223)
<matplotlib.axes.\_subplots.AxesSubplot object at ...\>
\>>> nx.draw\_spectral(G, \*\*options)
\>>> plt.subplot(224)
<matplotlib.axes.\_subplots.AxesSubplot object at ...\>
\>>> nx.draw\_shell(G, nlist\=\[range(5,10), range(5)\], \*\*options)
8、 DAFT
Daft 是一个 Python 包,它使用 matplotlib 渲染像素完美的概率图形模型,以便在期刊或互联网上发布。 使用简短的 Python 脚本和直观的模型构建语法,您可以设计定向(贝叶斯网络,有向无环图)和无向(马尔可夫随机场)模型,并将它们保存为 matplotlib 支持的任何格式(包括 PDF,PNG,EPS 和 SVG))。其相关资源如下所示:
(1)daft 官网链接 -http://daft-pgm.org/
(2)daft 的 github 链接 -https://github.com/dfm/daft