前言深度学习领域,最常见的就是各种网络模型,那么在写论文或者文章,介绍网络模型的时候,最好的办法当然就是展示代码画图,今天介绍的 Github 项目,就是整理了 22 个设计和可视化网络结构的工具,其地址如下: https://github.com/ashishpatel26/Tools-to-Design-or-Visualize-Architecture-of-Neural-Network 22 款工具名称分别是:
工具1. draw_convnetGithub: https://github.com/gwding/draw_convnet star 数量:1.7k+ 这个工具最后一次更新是 2018 年的时候,一个 python 脚本来绘制卷积神经网络的工具,效果如下所示: 2. NNSVG网址:http:///NN-SVG/LeNet.html 这个工具有 3 种网络结构风格,分别如下所示: LeNet 类型: AlexNet 类型 FCNN 类型 3. PlotNeuralNetGitHub 地址:https://github.com/HarisIqbal88/PlotNeuralNet star 数量:8.2k+ 这个工具是基于 Latex 代码实现的用于绘制网络结构,可以看看使用例子看看这些网络结构图是如何绘制出来的。 效果如下所示: FCN-8 FCN-32 安装这里给出在 Ubuntu 和 windows 两个系统的安装方式: ubuntu 16.04 sudo apt-get install texlive-latex-extra Ubuntu 18.04.2 是基于这个网站:https://gist.github.com/rain1024/98dd5e2c6c8c28f9ea9d,安装命令如下:
Windows
使用例子安装完后就是使用,按照如下所示即可: cd pyexamples/bash ../tikzmake.sh test_simple Python 的用法如下:
import syssys.path.append('../')from pycore.tikzeng import *# defined your archarch = [ to_head( '..' ), to_cor(), to_begin(), to_Conv('conv1', 512, 64, offset='(0,0,0)', to='(0,0,0)', height=64, depth=64, width=2 ), to_Pool('pool1', offset='(0,0,0)', to='(conv1-east)'), to_Conv('conv2', 128, 64, offset='(1,0,0)', to='(pool1-east)', height=32, depth=32, width=2 ), to_connection( 'pool1', 'conv2'), to_Pool('pool2', offset='(0,0,0)', to='(conv2-east)', height=28, depth=28, width=1), to_SoftMax('soft1', 10 ,'(3,0,0)', '(pool1-east)', caption='SOFT' ), to_connection('pool2', 'soft1'), to_end() ]def main(): namefile = str(sys.argv[0]).split('.')[0] to_generate(arch, namefile + '.tex' )if __name__ == '__main__': main()
4. TensorBoardhttps://www./tensorboard/graphs 使用过 TensorFlow 的都应该知道这个绘图工具,TensorFlow 的可视化工具,查看网络结构、损失的变化、准确率等指标的变化情况等。 网络结构的效果如下图所示: 5. Caffehttps://github.com/BVLC/caffe/blob/master/python/caffe/draw.py Caffe 的绘图工具,效果如下所示: 6. Matlabhttp://www./help/nnet/ref/view.html Matlab 的绘图工具,效果如下所示: 7. Keras.jshttps://transcranial./keras-js/#/inception-v3 Keras 的可视化工具,效果如下所示: 8. keras-sequential-asciihttps://github.com/stared/keras-sequential-ascii/ Keras 的一个第三方库,用于对序列模型的网络结构和参数进行检查,直接打印出来结果,比如,VGG 16 的网络结构如下所示,每层网络的参数维度,参数的数量以及占整个网络参数的比例都会展示出来: 安装通过 PyPI: pip install keras_sequential_ascii 直接通过 github 仓库:
使用例子在代码中添加: from keras_sequential_ascii import keras2asciikeras2ascii(model) 9. Netronhttps://github.com/lutzroeder/Netron Star 数量:9.7k+ 简介Netron 可以可视化神经网络,深度学习和机器学习模型,目前支持的网络框架包括:
另外,Netron 也有实验支持这些框架:
其效果如下所示: 安装安装方式,根据不同系统,有所不一样: macOS 两种方式,任选一种:
Linux 也是两种方式,任选其中一种:
Windows 也是两种方式,任选其中一种:
浏览器:浏览器运行地址:https://www./ai/netron Python 服务器: 首先,运行安装命令 pip install netron,然后使用方法有两种:
10. DotNethttps://github.com/martisak/dotnets 这个工具是一个简单的 python 脚本,利用 Graphviz 生成神经网络的图片。主要参考了文章:https://tgmstat./2013/06/12/draw-neural-network-diagrams-graphviz/ 用法如下: 在 MaxOS 上: python dotnets.py | dot -Tpng | open -f -a /Applications/Preview.app 或者生成 PDF 文件
其效果如下所示: 11. Graphvizhttp://www./ 教程:https://tgmstat./2013/06/12/draw-neural-network-diagrams-graphviz/ Graphviz 是一个开源的图可视化软件,它可以用抽象的图形和网络图来表示结构化信息。 其效果如下所示: 12. Keras Visualizationhttps:///api/utils/model_plotting_utils/ 这是 Keras 库中的一个功能模块-- keras.utils.vis_utils 提供的绘制 Keras 网络模型(使用的是 graphviz ) 其效果如下所示: 13. Conxhttps://conx./en/latest/index.html Python 的一个第三方库 conx 可以通过函数net.picture() 来实现对带有激活函数网络的可视化,可以输出图片格式包括 SVG, PNG 或者是 PIL。 其效果如下所示: 14. ENNUIhttps://math./ennui/ 通过拖和拽相应的图形框来实现一个网络结构的可视化,下面是一个可视化 LeNet 的例子: 15. NNet教程:https://beckmw./2013/03/04/visualizing-neural-networks-from-the-nnet-package/ R 工具包,简单的使用例子如下: data(infert, package='datasets')plot(neuralnet(case~parity+induced+spontaneous, infert)) 效果如下所示: ) 16. GraphCorehttps://www./posts/what-does-machine-learning-look-like GraphCore 主要是展示神经网络中操作的可视化结果,但也包括了网络结构的内容,比如每层的网络参数等。 下面展示了两个网络结构的可视化效果--AlexNet 和 ResNet50. AlexNet ResNet50 17. Neataptichttps://wagenaartje./neataptic/ Neataptic 提供了非常灵活的神经网络可视化形式
这种灵活性允许通过神经进化(neuro-evolution)的方式为数据集调整网络结构的形状,并通过多线程来实现。 其效果如下图所示: 18. TensorSpacehttps:/// 教程:https://www./news/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8/ TensorSpace 是通过 TensorFlow.js,Three.js 和 Tween.js 构建的一个神经网络三维可视化框架。它提供了 APIs 来构建深度学习网络层,加载预训练模型以及在浏览器中就可以生成三维的可视化结构。通过应用它的 API 接口,可以更直观地可视化和理解通过 TensorFlow、Keras 和 TensorFlow.js 等构建的任何预训练模型。 效果如下图所示: 19. Netscope CNN Analyzerhttp://dgschwend./netscope/quickstart.html 一款基于 web 端的可视化和分析卷积神经网络结构(或者是任意有向无环图),当前支持使用 Caffe 的 prototxt 形式。 效果如下图所示: 20. Monialhttps://github.com/mlajtos/moniel 计算图的交互式表示法,展示例子如下所示,左边是输入,右侧就是对应结构的可视化结果。 21. Texamplehttp://www./tikz/examples/neural-network/ 这个工具也可以通过 LaTex 来实现一个神经网络结构的可视化,比如,一个 LaTex 的例子: 其可视化结果如下所示: 22. Quivergithub: https://github.com/keplr-io/quiver Star 数量:1.5k Keras 的一款交互式可视化卷积特征的一个工具 展示例子如下所示: 安装方式两种方式,直接用 pip
或者通过 GitHub 仓库的方式: pip install git+git://github.com/keplr-io/quiver.git 使用例子首先构建你的 keras 模型:
接着通过一行代码来发布可视化的展示板: quiver_engine.server.launch(model, classes=['cat','dog'], input_folder='./imgs') 最后在刚刚设置的文件夹中就可以看到每个网络层的可视化结果。 如果是想在浏览器中查看,代码如下:
默认的地址是 localhost:5000 参考文章:
小结这 22 款工具的输出结果既有直接打印的,也有黑白图、彩色图、炫酷的球体可视化结果,以及三维可视化结果,基本都可以支持目前主流的深度学习框架,当然也有的是基于特定框架,比如 keras,实现的对应第三方库。 可以根据需求和使用的框架来进行选择,相信应该能够满足大部分人对可视化网络结构的需求。 |
|