「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

AIBigbull2050發表於2019-08-27


深度學習開源框架眾多,對於開發者來說其中有一個很硬的需求,就是 模型結構和權重的視覺化。使用過Caffe的同學都因為強大的Netscope可以離線修改實時視覺化網路結構而暗爽,那其他的框架怎麼樣呢?

今天給大家介紹一個可以離線視覺化各大深度學習開源框架模型結構和權重的專案, netron

作者&編輯 | 言有三

1 專案介紹

專案開發者Lutz Roeder,一位來自於微軟Visual Studio團隊的小哥,按照他自己的介紹,就是在家搞點AI tools玩玩。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

這是過去一年的contributions,基本就沒有停過,這是真正硬核的開源貢獻者呀,個人主頁https://www.lutzroeder.com/ai,有興趣可以去瞧瞧。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

Netron是他開源的深度學習模型視覺化工具,專案地址為:


「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

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等框架基本上把數得上名字的框架一網打盡,下面是ONNX的視覺化介面,很visual studio的感覺。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

另一方面,小哥哥也是非常的貼心,提供了各大平臺的安裝包! macOS的.dmg,Linux的.deb,Windows的.exe,還有瀏覽器版本,Python伺服器版本,真是good man,小白們再也不用擔心環境配置問題。

2 視覺化實驗

下面我們就來嘗試幾個框架的視覺化結果,首先要祭出有三AI開源的 12大深度學習開源框架的專案,從模型和資料介面定義,到訓練測試視覺化,提供了全套程式碼,地址如下:

https://github.com/longpeng2008/yousan.ai

具體的教程大家可以跳轉閱讀原文, 「完結」給新手的12大深度學習開源框架快速入門專案

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

這12個框架我們都使用一個 3層的卷積模型來完成一個影像分類問題,下面挑選其中幾個常用的來體驗視覺化效果。

2.1 Caffe

Caffe模型視覺化的輸入是可以是prototxt檔案和caffemodel檔案,首先分別視覺化訓練網路和測試網路train.prototxt和deploy.prototxt,結果如下:

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

比起Netscope,是不是效果也不遑多讓。如果想要檢視某一個網路層的細節,就可以點選該網路層,結果如下,所有網路配置引數細節皆可見,完美!

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

這就是全部了嗎?當然不,你還可以直接載入.caffemodel權重檔案,直接檢視每一個網路層的權重!老司機們可以從中來 簡單統計權重的分佈,還可以一鍵匯出引數為npy檔案,看到那個 儲存小按鈕沒有,這就是細節,不得不再次給小哥哥點贊

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

2.2 keras

keras的視覺化輸入是json格式的模型檔案,可以通過model.to_json()將模型儲存下來,然後載入.json檔案。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

如果想檢視權重,就載入.h5檔案,結果如下,雖然沒有caffe的那麼漂亮,也是很直觀的,不過權重引數矩陣順序不太一樣。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

2.3 tensorflow

要想視覺化tensorflow的模型結構,就必須將模型儲存為pb格式,這樣就能同時儲存網路結構和引數了,結果如下。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

2.4 pytorch

pytorch的網路結構視覺化不支援,不過可以像keras一樣檢視pt權重檔案。如果想視覺化網路結構,可以使用yousan.ai專案中pytorch目錄下的visualize.py指令碼。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

2.5 Mxnet

Mxnet通過symbol介面定義網路,網路結構一般存在字尾為symbol.json的檔案中,因此載入該檔案即可進行視覺化。權重的視覺化原理類似,就不做贅述。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

2.6 Darknet

DarkNet的網路結構定義在cfg檔案中,載入該cfg檔案即可進行視覺化。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

其他開源框架的案例,大家可以去下載我們的開源框架專案進行嘗試,感謝小哥作出的貢獻!

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

另外再安利一下我們之前的講述如何繪製更好看的網路結構的文章, 「雜談」那些酷炫的深度學習網路圖怎麼畫出來的? 一起享用,保證更香。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

總結

平時多留意一些好的工具,可以大大提升我們的學習效率,養成好的學習習慣,歡迎大家給我們推薦好的工具,在有三AI知識星球社群也可以一起分享。

「雜談」一招,同時視覺化18個開源框架的網路模型結構和權重

https://www.toutiao.com/a6729405926102532616/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655031/,如需轉載,請註明出處,否則將追究法律責任。

相關文章