专栏首页算法猿的成长22 款设计和可视化神经网络的工具

22 款设计和可视化神经网络的工具

总第 143 篇文章,本文大约 3000 字,阅读大约需要 10 分钟

前言

深度学习领域,最常见的就是各种网络模型,那么在写论文或者文章,介绍网络模型的时候,最好的办法当然就是展示代码画图,今天介绍的 Github 项目,就是整理了 22 个设计和可视化网络结构的工具,其地址如下:

https://github.com/ashishpatel26/Tools-to-Design-or-Visualize-Architecture-of-Neural-Network

22 款工具名称分别是:

  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

本文首发于我的知乎专栏:https://zhuanlan.zhihu.com/p/147462170


工具

1. draw_convnet

Github: https://github.com/gwding/draw_convnet

star 数量:1.7k+

这个工具最后一次更新是 2018 年的时候,一个 python 脚本来绘制卷积神经网络的工具,效果如下所示:

2. NNSVG

网址:http://alexlenail.me/NN-SVG/LeNet.html

这个工具有 3 种网络结构风格,分别如下所示:

LeNet 类型:

AlexNet 类型

FCNN 类型

3. PlotNeuralNet

GitHub 地址: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,安装命令如下:

sudo apt-get install texlive-latex-base
sudo apt-get install texlive-fonts-recommended
sudo apt-get install texlive-fonts-extra
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/
使用例子

安装完后就是使用,按照如下所示即可:

cd pyexamples/
bash ../tikzmake.sh test_simple

Python 的用法如下

  1. 先创建新的文件夹,并生成一个新的 python 代码文件:
$ mkdir my_project
$ cd my_project
vim my_arch.py
  1. 然后在新的代码文件 my_arch.py 中添加这段代码,用于定义你的网络结构,主要是不同类型网络层的参数,包括输入输出数量、卷积核数量等
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. 最后,运行脚本
bash ../tikzmake.sh my_arch

4. TensorBoard

https://www.tensorflow.org/tensorboard/graphs

使用过 TensorFlow 的都应该知道这个绘图工具,TensorFlow 的可视化工具,查看网络结构、损失的变化、准确率等指标的变化情况等。

网络结构的效果如下图所示:

5. Caffe

https://github.com/BVLC/caffe/blob/master/python/caffe/draw.py

Caffe 的绘图工具,效果如下所示:

6. Matlab

http://www.mathworks.com/help/nnet/ref/view.html

Matlab 的绘图工具,效果如下所示:

7. Keras.js

https://transcranial.github.io/keras-js/#/inception-v3

Keras 的可视化工具,效果如下所示:

8. keras-sequential-ascii

https://github.com/stared/keras-sequential-ascii/

Keras 的一个第三方库,用于对序列模型的网络结构和参数进行检查,直接打印出来结果,比如,VGG 16 的网络结构如下所示,每层网络的参数维度,参数的数量以及占整个网络参数的比例都会展示出来:

安装

通过 PyPI:

pip install keras_sequential_ascii

直接通过 github 仓库:

pip install git+git://github.com/stared/keras-sequential-ascii.git
使用例子

在代码中添加:

from keras_sequential_ascii import keras2ascii

keras2ascii(model)

9. Netron

https://github.com/lutzroeder/Netron

Star 数量:9.7k+

简介

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
  • 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

其效果如下所示:

安装

安装方式,根据不同系统,有所不一样:

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/netron

Python 服务器

首先,运行安装命令 pip install netron,然后使用方法有两种:

  • 命令行,运行 netron [文件路径]
  • .py 代码中加入
import netron;

netron.start('文件路径')

10. DotNet

https://github.com/martisak/dotnets

这个工具是一个简单的 python 脚本,利用 Graphviz 生成神经网络的图片。主要参考了文章:https://tgmstat.wordpress.com/2013/06/12/draw-neural-network-diagrams-graphviz/

用法如下:

在 MaxOS 上:

python dotnets.py | dot -Tpng | open -f -a /Applications/Preview.app

或者生成 PDF 文件

python dotnets.py | dot -Tpdf > test.pdf

其效果如下所示:

11. Graphviz

http://www.graphviz.org/

教程:https://tgmstat.wordpress.com/2013/06/12/draw-neural-network-diagrams-graphviz/

Graphviz 是一个开源的图可视化软件,它可以用抽象的图形和网络图来表示结构化信息。

其效果如下所示:

12. Keras Visualization

https://keras.io/api/utils/model_plotting_utils/

这是 Keras 库中的一个功能模块-- keras.utils.vis_utils 提供的绘制 Keras 网络模型(使用的是 graphviz

其效果如下所示:

13. Conx

https://conx.readthedocs.io/en/latest/index.html

Python 的一个第三方库 conx 可以通过函数net.picture() 来实现对带有激活函数网络的可视化,可以输出图片格式包括 SVG, PNG 或者是 PIL。

其效果如下所示:

14. ENNUI

https://math.mit.edu/ennui/

通过拖和拽相应的图形框来实现一个网络结构的可视化,下面是一个可视化 LeNet 的例子:

15. NNet

教程:https://beckmw.wordpress.com/2013/03/04/visualizing-neural-networks-from-the-nnet-package/

R 工具包,简单的使用例子如下:

data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))

效果如下所示:

)

16. GraphCore

https://www.graphcore.ai/posts/what-does-machine-learning-look-like

GraphCore 主要是展示神经网络中操作的可视化结果,但也包括了网络结构的内容,比如每层的网络参数等。

下面展示了两个网络结构的可视化效果--AlexNet 和 ResNet50.

AlexNet

ResNet50

17. Neataptic

https://wagenaartje.github.io/neataptic/

Neataptic 提供了非常灵活的神经网络可视化形式

  • 神经元和突触可以通过一行代码进行删除;
  • 没有规定神经网络的结构必须包含哪些内容

这种灵活性允许通过神经进化(neuro-evolution)的方式为数据集调整网络结构的形状,并通过多线程来实现。

其效果如下图所示:

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 等构建的任何预训练模型。

效果如下图所示:

19. Netscope CNN Analyzer

http://dgschwend.github.io/netscope/quickstart.html

一款基于 web 端的可视化和分析卷积神经网络结构(或者是任意有向无环图),当前支持使用 Caffe 的 prototxt 形式。

效果如下图所示:

20. Monial

https://github.com/mlajtos/moniel

计算图的交互式表示法,展示例子如下所示,左边是输入,右侧就是对应结构的可视化结果。

21. Texample

http://www.texample.net/tikz/examples/neural-network/

这个工具也可以通过 LaTex 来实现一个神经网络结构的可视化,比如,一个 LaTex 的例子:

其可视化结果如下所示:

22. Quiver

github: https://github.com/keplr-io/quiver

Star 数量:1.5k

Keras 的一款交互式可视化卷积特征的一个工具

展示例子如下所示:

安装方式

两种方式,直接用 pip

pip install quiver_engine

或者通过 GitHub 仓库的方式:

pip install git+git://github.com/keplr-io/quiver.git
使用例子

首先构建你的 keras 模型:

model = Model(...)

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

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

最后在刚刚设置的文件夹中就可以看到每个网络层的可视化结果。

如果是想在浏览器中查看,代码如下:

from quiver_engine import server
server.launch(model)

默认的地址是 localhost:5000


参考文章:

  1. https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures
  2. https://datascience.stackexchange.com/questions/2670/visualizing-deep-neural-network-training

小结

这 22 款工具的输出结果既有直接打印的,也有黑白图、彩色图、炫酷的球体可视化结果,以及三维可视化结果,基本都可以支持目前主流的深度学习框架,当然也有的是基于特定框架,比如 keras,实现的对应第三方库。

可以根据需求和使用的框架来进行选择,相信应该能够满足大部分人对可视化网络结构的需求。

本文分享自微信公众号 - 算法猿的成长(AI_Developer),作者:kbsc13

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GitHub上有哪些比较好的计算机视觉/机器视觉的项目?

    今天分享一下 Github 上不错的计算机视觉或者机器视觉方面的项目,包括入门的教程、非常经典的算法和实战项目等等。

    材ccc
  • [教程]一份简单易懂的 TensorFlow 教程

    上周分享了一份 TensorFlow 官方的中文版教程,这次分享的是在 Github 上的一份简单易懂的教程,项目地址是:

    材ccc
  • [资源推荐] 必须收藏的两个查找论文和代码实现的网站!

    无论是研究方向是 AI 方面的学生,或者是做机器学习方面的算法工程师,在掌握基础的机器学习相关知识后,都必须掌握搜索论文的技能,特别是研究或者工作领域方向的最新...

    材ccc
  • TensorWatch:用于数据科学和机器学习的调试和可视化工具

    TensorWatch是一个调试和可视化工具,专为Microsoft Research的深度学习和强化学习而设计。它适用于Jupyter Notebook,可显...

    代码医生工作室
  • Vim自动补全神器:YouCompleteMe

    第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名。本来打算在实训期间来完成安装的,无奈网实在不给力,也就拖到了回家的时候。在开始准备工作...

    小小科
  • CIA Vault7最新泄露文档:樱花盛开

    多份维基解密于2017年6月15日披露的文件显示,CIA早在2006年便开始了一项名为“樱花盛开”(Cherry Blossom)的项目。曝光的文档资料详实,图...

    FB客服
  • Botb:容器分析和漏洞利用工具

    BOtB(Break out the Box)是一款容器分析和漏洞利用工具,其主要是为渗透测试人员和工程师所设计的。

    FB客服
  • 同是3年开发经验,为什么你的技术比别人差很多?

    你有没有静下心来思考过:同样是做了x年Java开发,为什么你的技术比别人差很多? 其实技术水平的高低和个人智商关系不大(毕竟能做Java编程开发大家都不会差),...

    Java高级架构
  • 短小精悍的四数字域名8002.com已易主

    每天少不了域名交易,而四数字域名因其简短好记,品相好,在域名圈中颇受投资人和终端的青睐,近日,又曝出四数字域名8002.com已交易。

    躲在树上的域小名
  • 多类好米齐交易:域名776.cn近10万元结拍

    好米有好价格,这是域名圈内不变的定律,因为好米不仅受欢迎,而且易流通,因此价格好情有可原。近日,就有一批不错的域名结拍,涵盖数字、拼音和字母等类型。

    躲在树上的域小名

扫码关注云+社区

领取腾讯云代金券