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文章

1.  2020年計算機視覺學習指南

2. 是選擇Keras還是PyTorch開始你的深度學習之旅呢?

3. 編寫高效的PyTorch代碼技巧(上)

4. 編寫高效的PyTorch代碼技巧(下)

5. 深度學習算法簡要綜述(上)

6. 深度學習算法簡要綜述(下)

7. 10個實用的機器學習建議

8. 實戰|手把手教你訓練一個基於Keras的多標籤圖像分類器

精選python文章

1.  python數據模型

2. python版代碼整潔之道

3. 快速入門 Jupyter notebook

4. Jupyter 進階教程

5. 10個高效的pandas技巧

精選教程資源文章

1. [資源分享] TensorFlow 官方中文版教程來了

2. [資源]推薦一些Python書籍和教程,入門和進階的都有!

3. [Github項目推薦] 推薦三個助你更好利用Github的工具

4. Github上的各大高校資料以及國外公開課視頻

5. GitHub上有哪些比較好的計算機視覺/機器視覺的項目?

歡迎關注我的微信公衆號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

 

如果覺得不錯,在看、轉發就是對小編的一個支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章