LGiki's Blog

愿每个人都能被这个世界温柔相待

如何绘制出精美的神经网络模型结构图

最近需要绘制机器学习的模型结构图,但是通过draw.io画出来的图总感觉不如别人paper里的好看,所以就去查找了一下有没有用于绘制机器学习模型结构图的工具,顺便整理成这篇文章。虽然这篇文章标题里说的是“如何绘制精美的神经网络模型结构图”,但实际上这篇文章更多的是收集一些神经网络模型的可视化工具。希望能对同样遇到这个问题的人有所帮助。

PS:可以通过这个页面左侧的文章引导框快速定位到某个工具

框架无关

NN-SVG

Github地址:https://github.com/alexlenail/NN-SVG

使用方式:浏览器

在线使用:http://alexlenail.me/NN-SVG/LeNet.html

该工具支持导出SVG格式的矢量图形文件

提供了三种不同的神经网络结构图模板:

  1. FCNN Style

  2. LeNet Style

  3. AlexNet Style

draw_convnet

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

使用方式:命令行

PlotNeuralNet

Github地址:https://github.com/HarisIqbal88/PlotNeuralNet

使用方式:命令行

通过Python编写模型的结构代码,然后调用LaTeX输出为pdf格式的文档

Netron

Github地址:https://github.com/lutzroeder/Netron

使用方式:客户端 / 浏览器

看这名字多少能猜出来这又是一款基于Electron开发的程序,该程序支持非常多的文件格式:

ONNX (.onnx, .pb, .pbtxt), Keras (.h5, .keras), Core ML (.mlmodel), Caffe (.caffemodel, .prototxt), Caffe2 (predict_net.pb), Darknet (.cfg), MXNet (.model, -symbol.json), Barracuda (.nn), ncnn (.param), Tengine (.tmfile), TNN (.tnnproto), UFF (.uff) and TensorFlow Lite (.tflite)

同时也实验性地支持以下文件格式:

TorchScript (.pt, .pth), PyTorch (.pt, .pth), Torch (.t7), Arm NN (.armnn), BigDL (.bigdl, .model), Chainer (.npz, .h5), CNTK (.model, .cntk), Deeplearning4j (.zip), MediaPipe (.pbtxt), ML.NET (.zip), MNN (.mnn), PaddlePaddle (.zip, __model__), OpenVINO (.xml), scikit-learn (.pkl), TensorFlow.js (model.json, .pb) and TensorFlow (.pb, .meta, .pbtxt, .ckpt, .index)

可以说是把常用的机器学习框架都支持了一遍,支持导出为PNG和SVG格式的图像文件

Moniel

Github地址:https://github.com/mlajtos/moniel

可以通过该程序所定义的语法格式生成计算图的图像

框架相关

PS:以下框架的顺序是按照字母表顺序排序的

Caffe

caffe/draw.py

在Caffe中可以使用caffe/draw.py来绘制NetParameter protobuffer:

Netscope CNN Analyzer

项目主页:http://dgschwend.github.io/netscope/quickstart.html

使用方式:浏览器

支持可视化Caffe prototxt格式的模型

Keras

keras-sequential-ascii

Github地址:https://github.com/stared/keras-sequential-ascii/

使用方式:命令行

可将Keras的Sequential model通过ASCII字符画展示出来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
         OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

Input ##### 3 32 32
BatchNormalization μ|σ ------------------- 64 0.1%
##### 3 32 32
Convolution2D \|/ ------------------- 448 0.8%
relu ##### 16 30 30
Convolution2D \|/ ------------------- 2320 4.3%
relu ##### 16 28 28
MaxPooling2D Y max ------------------- 0 0.0%
##### 16 14 14
Convolution2D \|/ ------------------- 272 0.5%
tanh ##### 16 14 14
Flatten ||||| ------------------- 0 0.0%
##### 3136
Dense XXXXX ------------------- 50192 94.1%
##### 16
Dropout | || ------------------- 0 0.0%
##### 16
Dense XXXXX ------------------- 51 0.1%
softmax ##### 3

Keras Visualization

Keras可以通过官方提供的Model plotting utilities来绘制Keras模型图

ConX

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

一个Python库,可用于绘制带激活的神经网络

Quiver

Github地址:https://github.com/keplr-io/quiver

可交互的卷积网络特征可视化

Net2Vis

主页:https://viscom.net2vis.uni-ulm.de/

使用方式:浏览器

在线编辑代码,在get_model()方法中返回一个Keras模型就能绘制出相应的结构图

Matlab

View Neural Network

官方文档:http://www.mathworks.com/help/nnet/ref/view.html

Tensorflow

Tensorboard

主页:https://www.tensorflow.org/tensorboard

Tensorboard就不用过多介绍了,用过Tensorflow的应该都知道这个工具,很多开源的Tensorflow机器学习模型都支持了Tensorboard,通过官方文档也很容易在自己的代码中集成Tensorboard

TensorSpace.js

Github地址:https://github.com/tensorspace-team/tensorspace

主页:https://tensorspace.org/

使用方式:浏览器

TensorSpace是一套用于构建神经网络3D可视化应用的框架。TensorSpace 支持3D可视化经过适当预处理之后的 TensorFlow、Keras、TensorFlow.js 模型。

References

Buy me a cup of coffee