【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重
深度學習開源框架眾多,對于開發(fā)者來說其中有一個很硬的需求,就是模型結構和權重的可視化。使用過Caffe的同學都因為強大的Netscope可以離線修改實時可視化網絡結構而暗爽,那其他的框架怎么樣呢?
今天給大家介紹一個可以離線可視化各大深度學習開源框架模型結構和權重的項目,netron。
作者&編輯 | 言有三
1 項目介紹
項目開發(fā)者Lutz Roeder,一位來自于微軟Visual Studio團隊的小哥,按照他自己的介紹,就是在家搞點AI tools玩玩。
這是過去一年的contributions,基本就沒有停過,這是真正硬核的開源貢獻者呀,個人主頁https://www.lutzroeder.com/ai,有興趣可以去瞧瞧。
Netron是他開源的深度學習模型可視化工具,項目地址為:
https://github.com/lutzroeder/netron
目前支持哪些框架呢?
ONNX?(.onnx,?.pb,?.pbtxt)
Keras?(.h5,?.keras)
Core ML?(.mlmodel)
Caffe?(.caffemodel,?.prototxt)
Caffe2?(predict_net.pb,?predict_net.pbtxt)
MXNet?(.model,?-symbol.json)
TorchScript?(.pt,?.pth)
NCNN?(.param)
TensorFlow Lite?(.tflite)
PyTorch?(.pt,?.pth)
Torch?(.t7)
CNTK?(.model,?.cntk)
Deeplearning4j(.zip)
PaddlePaddle?(.zip,?__model__)
Darknet?(.cfg)
scikit-learn?(.pkl)
TensorFlow.js?(model.json,?.pb)
TensorFlow?(.pb,?.meta,?.pbtxt).
共18個框架,除了chainer,matconvnet等框架基本上把數(shù)得上名字的框架一網打盡,下面是ONNX的可視化界面,很visual studio的感覺。
另一方面,小哥哥也是非常的貼心,提供了各大平臺的安裝包!macOS的.dmg,Linux的.deb,Windows的.exe,還有瀏覽器版本,Python服務器版本,真是good man,小白們再也不用擔心環(huán)境配置問題。
2 可視化實驗
下面我們就來嘗試幾個框架的可視化結果,首先要祭出有三AI開源的12大深度學習開源框架的項目,從模型和數(shù)據(jù)接口定義,到訓練測試可視化,提供了全套代碼,地址如下:
https://github.com/longpeng2008/yousan.ai
具體的教程大家可以跳轉閱讀原文。
這12個框架我們都使用一個3層的卷積模型來完成一個圖像分類問題,下面挑選其中幾個常用的來體驗可視化效果。
2.1 Caffe
Caffe模型可視化的輸入可以是prototxt文件和caffemodel文件。下面首先分別可視化訓練網絡和測試網絡train.prototxt和deploy.prototxt,結果如下:
比起Netscope,是不是效果也不遑多讓。如果想要查看某一個網絡層的細節(jié),就可以點擊該網絡層,結果如下,所有網絡配置參數(shù)細節(jié)皆可見,完美!
這就是全部了嗎?當然不,你還可以直接載入.caffemodel權重文件,直接查看每一個網絡層的權重!
老司機們可以從中簡單統(tǒng)計權重的分布,還可以一鍵導出參數(shù)為npy文件,看到那個保存小按鈕沒有,這就是細節(jié),不得不再次給小哥哥點贊???
2.2 keras
keras的可視化輸入是json格式的模型文件,可以通過model.to_json()將模型存儲下來,然后載入.json文件。
如果想查看權重,就載入.h5文件,結果如下,雖然沒有caffe的那么漂亮,也是很直觀的,不過權重參數(shù)矩陣順序不太一樣。
2.3 tensorflow
要想可視化tensorflow的模型結構,就必須將模型存儲為pb格式,這樣就能同時保存網絡結構和參數(shù)了,結果如下。
2.4 pytorch
pytorch的網絡結構可視化不支持,不過可以像keras一樣查看pt權重文件。如果想可視化網絡結構,可以使用yousan.ai項目中pytorch目錄下的visualize.py腳本。
2.5 Mxnet
Mxnet通過symbol接口定義網絡,網絡結構一般存在后綴為symbol.json的文件中,因此載入該文件即可進行可視化。權重的可視化原理類似,就不做贅述。
2.6 Darknet
DarkNet的網絡結構定義在cfg文件中,載入該cfg文件即可進行可視化。
其他開源框架的案例,大家可以去下載我們的開源框架項目進行嘗試,感謝小哥作出的貢獻!
另外再安利一下我們之前的講述如何繪制更好看的網絡結構的文章,一起享用,保證更香。
總結
平時多留意一些好的工具,可以大大提升我們的學習效率,養(yǎng)成好的學習習慣,歡迎大家給我們推薦好的工具,在有三AI知識星球社區(qū)也可以一起分享。
有三AI夏季劃
有三AI夏季劃進行中,歡迎了解并加入,系統(tǒng)性成長為中級CV算法工程師。
轉載文章請后臺聯(lián)系
侵權必究
往期精選
【完結】優(yōu)秀的深度學習從業(yè)者都有哪些優(yōu)秀的習慣
【雜談】如何學會看arxiv.org才能不錯過自己研究領域的最新論文?
【雜談】那些酷炫的深度學習網絡圖怎么畫出來的?
【雜談】深度學習必備,各路免費爬蟲一舉拿下
【雜談】從GitHub上星星最多的男人開始發(fā)GitHub綜述資料
【雜談】提升寫代碼效率不得不做的三件事
【雜談】想成為機器學習學霸?先學會做筆記吧
【雜談】天下苦公眾號久矣,如何利用這幾類公眾號進行深度學習?
【雜談】扒一扒Reddit,Medium,Quora與知乎等國內外高質量AI社區(qū)與內容平臺
【雜談】菜鳥誤入linux會有哪些慘痛的經歷
【雜談】AI工業(yè)界都有哪些值得參加的比賽?
【雜談】如何應對煩人的開源庫版本依賴-做一個心平氣和的程序員?
【雜談】手把手帶你配置深度學習環(huán)境
【雜談】為何有三AI只做原創(chuàng),從不轉載
【雜談】為什么有三AI自斷財路,從來不接廣告
【雜談】什么是我心目中深度學習算法工程師的標準
【雜談】白身,初識,不惑,有識,不可知,你處于深度學習工程師哪一重境界了
總結
以上是生活随笔為你收集整理的【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】GPT:第一个引入Transf
- 下一篇: 【GAN优化】从动力学视角看GAN是一种