最近需要绘制机器学习的模型结构图,但是通过draw.io画出来的图总感觉不如别人paper里的好看,所以就去查找了一下有没有用于绘制机器学习模型结构图的工具,顺便整理成这篇文章。虽然这篇文章标题里说的是“如何绘制精美的神经网络模型结构图”,但实际上这篇文章更多的是收集一些神经网络模型的可视化工具。希望能对同样遇到这个问题的人有所帮助。
PS:可以通过这个页面左侧的文章引导框快速定位到某个工具
框架无关
NN-SVG
Github地址:https://github.com/alexlenail/NN-SVG
使用方式:浏览器
在线使用:http://alexlenail.me/NN-SVG/LeNet.html
该工具支持导出SVG格式的矢量图形文件

提供了三种不同的神经网络结构图模板:
FCNN Style
LeNet Style
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 | OPERATION DATA DIMENSIONS WEIGHTS(N) WEIGHTS(%) |
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
使用方式:浏览器
TensorSpace是一套用于构建神经网络3D可视化应用的框架。TensorSpace 支持3D可视化经过适当预处理之后的 TensorFlow、Keras、TensorFlow.js 模型。
