神经网络 可视化
深度学习领域,最常见的就是各种网络模型,那么在写论文或者文章,介绍网络模型的时候,最好的办法当然就是展示代码画图,整理了 23 个设计和可视化网络结构的工具,23款工具名称分别如下,

  1. draw_convnet
  2. NNSVG
  3. PlotNeuralNet
  4. TensorBoard
  5. Caffe
  6. Matlab
  7. Keras.js
  8. Keras-sequential-ascii
  9. Netron
  10. DotNet
  11. Graphviz
  12. Keras Visualization
  13. Conx
  14. ENNUI
  15. NNet
  16. GraphCore
  17. Neataptic
  18. TensorSpace
  19. Netscope CNN Analyzer
  20. Monial
  21. Texample
  22. Quiver
  23. Net2Vis

工具

1. draw_convnet

Github: https://github.com/gwding/draw_convnetstar
这个工具最后一次更新是 2018 年的时候,一个 python 脚本来绘制卷积神经网络的工具

2. NNSVG

网址:http://alexlenail.me/NN-SVG/LeNet.html这个工具有 3 种网络结构风格,分别如下所示:

LeNet 类型

23 款神经网络的设计和可视化工具 - 图1

AlexNet 类型

23 款神经网络的设计和可视化工具 - 图2

FCNN 类型

23 款神经网络的设计和可视化工具 - 图3

3. PlotNeuralNet

GitHub 地址:https://github.com/HarisIqbal88/PlotNeuralNetstar
这个工具是基于 Latex 代码实现的用于绘制网络结构,可以看看使用例子看看这些网络结构图是如何绘制出来的。效果如下所示:23 款神经网络的设计和可视化工具 - 图423 款神经网络的设计和可视化工具 - 图5

安装

这里给出在 Ubuntu 和 windows 两个系统的安装方式:ubuntu 16.04

  1. sudo apt-get install texlive-latex-extra

Ubuntu 18.04.2 是基于这个网站:https://gist.github.com/rain1024/98dd5e2c6c8c28f9ea9d,安装命令如下:

  1. sudo apt-get install texlive-latex-base
  2. sudo apt-get install texlive-fonts-recommended
  3. sudo apt-get install texlive-fonts-extra
  4. sudo apt-get install texlive-latex-extra

Windows

  1. 首先下载并安装 MikTex,下载网站:https://miktex.org/download
  2. 其次,下载并安装 windows 的 bash 运行器,推荐这两个:
  • Git:https://git-scm.com/download/win
  • Cygwin:https://www.cygwin.com/

    使用例子

    安装完后就是使用,按照如下所示即可:
    1. cd pyexamples/
    2. bash ../tikzmake.sh test_simple
    Python 的用法如下
    先创建新的文件夹,并生成一个新的 python 代码文件:
    1. $ mkdir my_project
    2. $ cd my_project
    3. vim my_arch.py
    然后在新的代码文件 my_arch.py 中添加这段代码,用于定义网络结构,主要是不同类型网络层的参数,包括输入输出数量、卷积核数量等 ```python import sys sys.path.append(‘../‘) from pycore.tikzeng import *

defined your arch

arch = [ 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()

  1. 最后,运行脚本
  2. ```bash
  3. bash ../tikzmake.sh my_arch

4. TensorBoard

https://www.tensorflow.org/tensorboard/graphs
使用过 TensorFlow 的都应该知道这个绘图工具,TensorFlow 的可视化工具,查看网络结构、损失的变化、准确率等指标的变化情况等。网络结构的效果如下图所示:23 款神经网络的设计和可视化工具 - 图6

5. Caffe

https://github.com/BVLC/caffe/blob/master/python/caffe/draw.py
Caffe 的绘图工具,效果如下所示:23 款神经网络的设计和可视化工具 - 图7

6. Matlab

http://www.mathworks.com/help/nnet/ref/view.html
Matlab 的绘图工具,效果如下所示:23 款神经网络的设计和可视化工具 - 图8

7. Keras.js

https://transcranial.github.io/keras-js/#/inception-v3
Keras 的可视化工具,效果如下所示:23 款神经网络的设计和可视化工具 - 图9

8. keras-sequential-ascii

https://github.com/stared/keras-sequential-ascii/
Keras 的一个第三方库,用于对序列模型的网络结构和参数进行检查,直接打印出来结果,比如,VGG 16 的网络结构如下所示,每层网络的参数维度,参数的数量以及占整个网络参数的比例都会展示出来:23 款神经网络的设计和可视化工具 - 图10

安装

通过 PyPI:

  1. pip install keras_sequential_ascii

直接通过 github 仓库:

  1. pip install git+git://github.com/stared/keras-sequential-ascii.git

使用例子

在代码中添加:

  1. from keras_sequential_ascii import keras2ascii
  2. keras2ascii(model)

9. Netron

https://github.com/lutzroeder/Netron

简介

Netron 可以可视化神经网络,深度学习和机器学习模型,目前支持的网络框架包括:

  • ONNX: .onnx, .pb, .pbtxt 文件
  • Keras:.h5,.keras 文件
  • Core ML:.mlmodel
  • Caffe:.caffemodel, .prototxt
  • Caffe2:predict_net.pb, predict_net.pbtxt
  • Darknet: .cfg
  • MXNet:.model, -symbol.json
  • ncnn:.param
  • TensorFlow Lite:.tflite

另外,Netron 也有实验支持这些框架:

  • TorchScript: .pt, .pth
  • PyTorch.pt, .pth
  • Torch: .t7
  • Arm NN.armnn
  • Barracuda.nn
  • BigDL .bigdl, .model
  • Chainer.npz, .h5
  • CNTK.model, .cntk
  • Deeplearning4j.zip
  • MediaPipe.pbtxt
  • http://ML.NET.zip
  • MNN.mnn
  • OpenVINO.xml
  • PaddlePaddle.zip, __model__
  • scikit-learn.pkl
  • Tengine.tmfile
  • TensorFlow.jsmodel.json, .pb
  • TensorFlow.pb, .meta, .pbtxt, .ckpt, .index

其效果如下所示:23 款神经网络的设计和可视化工具 - 图11

安装

安装方式,根据不同系统,有所不一样:macOS两种方式,任选一种:

  1. 下载 .dmg 文件,地址:https://github.com/lutzroeder/netron/releases/latest
  2. 运行命令 brew cask install netron

Linux也是两种方式,任选其中一种:

  1. 下载 .AppImage 文件,下载地址:https://github.com/lutzroeder/netron/releases/latest
  2. 运行命令 snap install netron

Windows也是两种方式,任选其中一种:

  1. 下载 .exe 文件,下载地址:https://github.com/lutzroeder/netron/releases/latest
  2. 运行命令 winget install netron

浏览器:浏览器运行地址:https://www.lutzroeder.com/ai/netronPython 服务器:首先,运行安装命令 pip install netron,然后使用方法有两种:

这种灵活性允许通过神经进化(neuro-evolution)的方式为数据集调整网络结构的形状,并通过多线程来实现。其效果如下图所示:23 款神经网络的设计和可视化工具 - 图20

18. TensorSpace

https://tensorspace.org/
教程:https://www.freecodecamp.org/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 等构建的任何预训练模型。效果如下图所示:23 款神经网络的设计和可视化工具 - 图21

19. Netscope CNN Analyzer

http://dgschwend.github.io/netscope/quickstart.html
一款基于 web 端的可视化和分析卷积神经网络结构(或者是任意有向无环图),当前支持使用 Caffe 的 prototxt 形式。效果如下图所示:23 款神经网络的设计和可视化工具 - 图22

20. Monial

https://github.com/mlajtos/moniel
计算图的交互式表示法,展示例子如下所示,左边是输入,右侧就是对应结构的可视化结果。23 款神经网络的设计和可视化工具 - 图23

21. Texample

http://www.texample.net/tikz/examples/neural-network/
这个工具也可以通过 LaTex 来实现一个神经网络结构的可视化,比如,一个 LaTex 的例子:
23 款神经网络的设计和可视化工具 - 图24
其可视化结果如下所示:
23 款神经网络的设计和可视化工具 - 图25

22. Quiver

github: https://github.com/keplr-io/quiver
Keras 的一款交互式可视化卷积特征的一个工具展示例子如下所示:23 款神经网络的设计和可视化工具 - 图26

安装方式

两种方式,直接用 pip

  1. pip install quiver_engine

或者通过 GitHub 仓库的方式:

  1. pip install git+git://github.com/keplr-io/quiver.git

使用例子

首先构建 keras 模型:

  1. model = Model(...)

接着通过一行代码来发布可视化的展示板:

  1. quiver_engine.server.launch(model, classes=['cat','dog'], input_folder='./imgs')

最后在刚刚设置的文件夹中就可以看到每个网络层的可视化结果。如果是想在浏览器中查看,代码如下:

  1. from quiver_engine import server
  2. server.launch(model)

默认的地址是 localhost:5000

23.Net2Vis

论文地址:https://arxiv.org/abs/1902.04394
Githubhttps://github.com/viscom-ulm/Net2Vis
这款工具的效果例子图:23 款神经网络的设计和可视化工具 - 图27安装方法首先假设已经安装了 python3 和 npm,然后:

  1. 克隆这个 github 项目:

    1. git clone https://github.com/viscom-ulm/Net2Vis
    1. 为了后端工作,这里需要安装 Docker 和 Cairo,主要的作用是转换为 PDF,以及在浏览器里可以运行模型。
      如果是采用 docker,那么也要运行 daemon,这样才能在单独的容器里运行粘贴的代码。对于后端的配置,步骤如下:
      1. # 1.进入后端的文件夹内
      2. cd backend
      3. # 2. 安装依赖包
      4. pip3 install -r requirements.txt
      5. # 3. 安装 docker容器
      6. docker build --force-rm -t tf_plus_keras .
      7. # 4. 根据你的系统安装对应的 python 的 cairo 包,比如Debian 的 python-cairosvg
      8. # 5. 开启服务
      9. python server.py
      而前端是一个 react 的应用,使用方式如下:
      1. # 1. 进入文件夹
      2. cd net2vis
      3. # 2. 安装 JavaScript 的依赖包
      4. npm install
      5. # 3. 开启应用
      6. npm start
      参考文章:
  2. https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

  3. https://datascience.stackexchange.com/questions/2670/visualizing-deep-neural-network-training

    小结

    这 23 款工具的输出结果既有直接打印的,也有黑白图、彩色图、炫酷的球体可视化结果,以及三维可视化结果,基本都可以支持目前主流的深度学习框架,当然也有的是基于特定框架,比如 keras,实现的对应第三方库。可以根据需求和使用的框架来进行选择,相信应该能够满足大部分人对可视化网络结构的需求。