神经网络可视化(二)——收集的一些常见的网络可视化方法

前言

tensorflow,pytorch,mxnet每一个主流的深度学习框架都提供了相对应的可视化模板,那有没有一种方法更加具有通用性呢?我们会在论文中,相关文献中看到各种神经网络可视化的图形,有平面图形,三维立体图形,觉得很美观,你一定很好奇,这是不是使用绘图软件画的,还是只是用办公软件画的?对于人工智能研究者,那就太low了,人工智能都搞得定,还能被几幅图像给难住?本文带你一文看尽常用的一些神经网络可视化的开源项目。

前面已经介绍了小草最喜欢的一个可视化框架,netron,今天来看一下接下来的几种网络可视化途径吧!鉴于篇幅较多,本次为系列文章第二篇。

目录

1、ConvNetDraw

2、 draw_convnet

3、PlotNeuralNet

4、NN-SVG

5、Python + Graphviz

6、Graphviz - dot

7、 NetworkX

8、 DAFT

1、ConvNetDraw

这个工具可能很多人都不知道,不过如果你知道神经网络的结构,而且你能很快的写出基本的代码,那么这款软件再方便不过啦,重要的是它的绘制结果是3D,比较好看,缺点是卷积层的颜色等比较固定,不适合进行设计。以下是有关该工具的几个有用链接。

(1)ConvNetDraw的github-https://github.com/cbovar/ConvNetDraw

(2)ConvNetDraw在线绘图网址-https://cbovar.github.io/ConvNetDraw/

神经网络可视化(二)——收集的一些常见的网络可视化方法_第1张图片

2、 draw_convnet

这是一个Python工具,可以将代码转换为网络图显示出来。有关该工具的有用链接如下所示:

raw_convnet的github链接-https://github.com/gwding/draw_convnet

神经网络可视化(二)——收集的一些常见的网络可视化方法_第2张图片

3、PlotNeuralNet

这是我偶然间寻找到的工具,基于Latex,话不多说,直接看效果你就决定要不要使用它啦。其相关链接如下所示:

PlotNeuralNet的github链接-https://github.com/HarisIqbal88/PlotNeuralNet

神经网络可视化(二)——收集的一些常见的网络可视化方法_第3张图片

神经网络可视化(二)——收集的一些常见的网络可视化方法_第4张图片

4、NN-SVG

有关该软件的有用链接如下所示:

(1)N-SVG的github链接-https://github.com/zfrenchee/NN-SVG

(2)N-SVG的在线界面-http://alexlenail.me/NN-SVG/LeNet.html

神经网络可视化(二)——收集的一些常见的网络可视化方法_第5张图片

神经网络可视化(二)——收集的一些常见的网络可视化方法_第6张图片

5、Python + Graphviz

针对节点较多的网络,不可避免需要投入大量尽量来写重复的脚本代码。用python编写了一个简单的dot脚本生成工具(MakeNN),可以很方便的输入参数生成nn结构图。

神经网络可视化(二)——收集的一些常见的网络可视化方法_第7张图片

6、Graphviz - dot

在dot里面label的玩法比较多,在上面看到的每个节点都是简单的一段文字,如果想要比较复杂的结构怎么办?那就通过编写代码生成吧。其对应的代码和结果如下所示。其相关的资源如下所示:

Graphviz的官方链接-https://www.graphviz.org/

神经网络可视化(二)——收集的一些常见的网络可视化方法_第8张图片

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)

>>> nx.draw_random(G, **options)
>>> plt.subplot(222)

>>> nx.draw_circular(G, **options)
>>> plt.subplot(223)

>>> nx.draw_spectral(G, **options)
>>> plt.subplot(224)

>>> nx.draw_shell(G, nlist=[range(5,10), range(5)], **options)

神经网络可视化(二)——收集的一些常见的网络可视化方法_第9张图片

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

神经网络可视化(二)——收集的一些常见的网络可视化方法_第10张图片

你可能感兴趣的:(神经网络可视化(二)——收集的一些常见的网络可视化方法)