點擊上方“算法猿的成長“,關注公衆號,選擇加“星標“或“置頂”
總第 143 篇文章,本文大約 3000 字,閱讀大約需要 10 分鐘
前言
深度學習領域,最常見的就是各種網絡模型,那麼在寫論文或者文章,介紹網絡模型的時候,最好的辦法當然就是展示代碼畫圖,今天介紹的 Github 項目,就是整理了 22 個設計和可視化網絡結構的工具,其地址如下:
https://github.com/ashishpatel26/Tools-to-Design-or-Visualize-Architecture-of-Neural-Network
22 款工具名稱分別是:
draw_convnet
NNSVG
PlotNeuralNet
TensorBoard
Caffe
Matlab
Keras.js
Keras-sequential-ascii
Netron
DotNet
Graphviz
Keras Visualization
Conx
ENNUI
NNet
GraphCore
Neataptic
TensorSpace
Netscope CNN Analyzer
Monial
Texample
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 代碼實現的用於繪製網絡結構,可以看看使用例子看看這些網絡結構圖是如何繪製出來的。
效果如下所示:
安裝
這裏給出在 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
首先下載並安裝 MikTex,下載網站:https://miktex.org/download
其次,下載並安裝 windows 的 bash 運行器,推薦這兩個:
Git:https://git-scm.com/download/win
Cygwin:https://www.cygwin.com/
使用例子
安裝完後就是使用,按照如下所示即可:
cd pyexamples/
bash ../tikzmake.sh test_simple
Python 的用法如下:
先創建新的文件夾,並生成一個新的 python 代碼文件:
$ mkdir my_project
$ cd my_project
vim my_arch.py
然後在新的代碼文件
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()
最後,運行腳本
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.js :
model.json
,.pb
TensorFlow :
.pb
,.meta
,.pbtxt
,.ckpt
,.index
其效果如下所示:
安裝
安裝方式,根據不同系統,有所不一樣:
macOS
兩種方式,任選一種:
下載
.dmg
文件,地址:https://github.com/lutzroeder/netron/releases/latest運行命令
brew cask install netron
Linux
也是兩種方式,任選其中一種:
下載
.AppImage
文件,下載地址:https://github.com/lutzroeder/netron/releases/latest運行命令
snap install netron
Windows
也是兩種方式,任選其中一種:
下載
.exe
文件,下載地址:https://github.com/lutzroeder/netron/releases/latest運行命令
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
參考文章:
https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures
https://datascience.stackexchange.com/questions/2670/visualizing-deep-neural-network-training
小結
這 22 款工具的輸出結果既有直接打印的,也有黑白圖、彩色圖、炫酷的球體可視化結果,以及三維可視化結果,基本都可以支持目前主流的深度學習框架,當然也有的是基於特定框架,比如 keras,實現的對應第三方庫。
可以根據需求和使用的框架來進行選擇,相信應該能夠滿足大部分人對可視化網絡結構的需求。
可以點擊文章底部“閱讀原文”直接查看我的知乎文章,可以留言進行評論。
精選AI文章
2. 是選擇Keras還是PyTorch開始你的深度學習之旅呢?
7. 10個實用的機器學習建議
8. 實戰|手把手教你訓練一個基於Keras的多標籤圖像分類器
精選python文章
1. python數據模型
4. Jupyter 進階教程
精選教程資源文章
1. [資源分享] TensorFlow 官方中文版教程來了
2. [資源]推薦一些Python書籍和教程,入門和進階的都有!
3. [Github項目推薦] 推薦三個助你更好利用Github的工具
5. GitHub上有哪些比較好的計算機視覺/機器視覺的項目?
歡迎關注我的微信公衆號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!
如果覺得不錯,在看、轉發就是對小編的一個支持!