龙空技术网

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

极市平台 1994

前言:

现时咱们对“graphexe”都比较关切,你们都想要了解一些“graphexe”的相关资讯。那么小编在网摘上收集了一些对于“graphexe””的相关文章,希望你们能喜欢,各位老铁们一起来学习一下吧!

来源丨算法猿的成长

编辑丨极市平台

前言

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

22 款工具名称分别是:

draw_convnetNNSVGPlotNeuralNetTensorBoardCaffeMatlabKeras.jsKeras-sequential-asciiNetronDotNetGraphvizKeras VisualizationConxENNUINNetGraphCoreNeatapticTensorSpaceNetscope CNN AnalyzerMonialTexampleQuiver

本文首发于我的知乎专栏:

1. draw_convnet

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

2. NNSVG

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

AlexNet 类型

FCNN 类型

3. PlotNeuralNet

GitHub 地址: 数量:8.2k+这个工具是基于 Latex 代码实现的用于绘制网络结构,可以看看使用例子看看这些网络结构图是如何绘制出来的。效果如下所示:

FCN-8

FCN-32

安装

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

sudo apt-get install texlive-latex-extra

Ubuntu 18.04.2 是基于这个网站:,安装命令如下:

sudo apt-get install texlive-latex-basesudo apt-get install texlive-fonts-recommendedsudo apt-get install texlive-fonts-extrasudo apt-get install texlive-latex-extra

Windows

首先下载并安装 MikTex,下载网站:其次,下载并安装 windows 的 bash 运行器,推荐这两个:Git:Cygwin:使用例子

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

cd pyexamples/bash ../tikzmake.sh test_simple

Python 的用法如下

先创建新的文件夹,并生成一个新的 python 代码文件:

$ mkdir my_project$ cd my_projectvim my_arch.py
然后在新的代码文件 `my_arch.py` 中添加这段代码,用于定义你的网络结构,主要是不同类型网络层的参数,包括输入输出数量、卷积核数量等
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()
最后,运行脚本
bash ../tikzmake.sh my_arch
4. TensorBoard

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

5. Caffe

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

6. Matlab

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

7. Keras.js

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

8. keras-sequential-ascii

的一个第三方库,用于对序列模型的网络结构和参数进行检查,直接打印出来结果,比如,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 keras2asciikeras2ascii(model)
9. Netron

数量:9.7k+

简介

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

ONNX: .onnx, .pb, .pbtxt 文件Keras:.h5,.keras 文件Core ML:.mlmodelCaffe:.caffemodel, .prototxtCaffe2:predict_net.pb, predict_net.pbtxtDarknet: .cfgMXNet:.model, -symbol.jsonncnn:.paramTensorFlow Lite:.tflite

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

TorchScript: .pt, .pthPyTorch.pt, .pthTorch: .t7Arm NN.armnnBarracuda.nnBigDL.bigdl, .modelChainer.npz, .h5CNTK.model, .cntkDeeplearning4j.zipMediaPipe.pbtxt.zipMNN.mnnOpenVINO.xmlPaddlePaddle.zip, __model__scikit-learn.pklTengine.tmfileTensorFlow.jsmodel.json, .pbTensorFlow.pb, .meta, .pbtxt, .ckpt, .index

其效果如下所示:

安装

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

下载 .dmg 文件,地址:运行命令 brew cask install netron

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

下载 .AppImage 文件,下载地址:运行命令 snap install netron

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

下载 .exe 文件,下载地址:运行命令 winget install netron

浏览器:浏览器运行地址:Python 服务器:首先,运行安装命令 pip install netron,然后使用方法有两种:

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

import netron;netron.start('文件路径')
10. DotNet

这个工具是一个简单的 python 脚本,利用 Graphviz 生成神经网络的图片。主要参考了文章:用法如下:在 MaxOS 上:

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

或者生成 PDF 文件

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

其效果如下所示:

11. Graphviz

教程:Graphviz 是一个开源的图可视化软件,它可以用抽象的图形和网络图来表示结构化信息。其效果如下所示:

12. Keras Visualization

这是 Keras 库中的一个功能模块-- keras.utils.vis_utils 提供的绘制 Keras 网络模型(使用的是 graphviz )其效果如下所示:

13. Conx

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

14. ENNUI

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

15. NNet

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

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

效果如下所示:

16. GraphCore

GraphCore 主要是展示神经网络中操作的可视化结果,但也包括了网络结构的内容,比如每层的网络参数等。下面展示了两个网络结构的可视化效果--AlexNet 和 ResNet50.AlexNet

ResNet50

17. Neataptic

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

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

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

18. TensorSpace

教程:TensorSpace 是通过 TensorFlow.js,Three.js 和 Tween.js 构建的一个神经网络三维可视化框架。它提供了 APIs 来构建深度学习网络层,加载预训练模型以及在浏览器中就可以生成三维的可视化结构。通过应用它的 API 接口,可以更直观地可视化和理解通过 TensorFlow、Keras 和 TensorFlow.js 等构建的任何预训练模型。效果如下图所示:

19. Netscope CNN Analyzer

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

20. Monial

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

21. Texample

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

其可视化结果如下所示:

22. Quiver

github: 数量:1.5kKeras 的一款交互式可视化卷积特征的一个工具展示例子如下所示:

安装方式

两种方式,直接用 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 serverserver.launch(model)

默认的地址是 localhost:5000

参考文章:

小结

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

标签: #graphexe #3dresnet可视化