netron 好用的模型可視化工具

Posted on Wed, May 5, 2021 tensorflow pytorch visualization deep learning

Last update @2021/03/05

深度學習模型可視化

深度學習的框架越來越多,從最多人用的 Tensorflow, Pytorch, 已經被併入 Tenserflow 的 Keras, 或是工業部署會用到的 Tensorflow lite 等等,當你今天拿到一個模型,想要知道模型架構是如何設計,使用可視化工具是一種方便且簡單的方式。

然而,不同的框架對模型可視化的支援度不一樣,因此 netron 的出現可以省去許多麻煩。自從我去公司上班後才發現這個好用的工具,真是相見恨晚啊~

netron 簡介

netron 的 github 頁面列出了所有支援的模型檔案,真的是林林總總,學都學不完啊,如果每次拿到一個新框架的模型,為了看懂模型架構而從頭開始學習,實在是太浪費時間了。netron 就可以幫助你快速的理解模型架構,netron對不同框架的支援度不太一樣,有些已經非常完整,有些可能會有一點小問題,大家可以自行嘗試。

netron 可以安裝在 macOS, Windows, Linux, 也可以直接使用網頁板,非常的方便,我平常使用時都直接用網頁版的。netron 的操作非常直觀,滑鼠滾輪放大縮小,按住左鍵可以上下移動。

netron 可視化結果

netron 的 github 已經提供許多範例了,這邊放個比較不一樣的: tensorflow lite 的 quantize model,quantize(量化) 可以有效減少模型大小,是部署深度學習模型常用的方法。這邊從 tensorflow hub 下載的 mobilenet_v1_0.25_128_quantized ,用 netron 來看看模型的架構和參數。

下圖是選取第一個 Conv2D 的結果,可以看到 netron 把 Conv2D 的參數,input, weight, bias, 和 output 全都包了,提供了許多有用的資訊。比如說這個模型的輸入是大小 128 * 128 的彩色圖片,第一個 Conv2D 的 bias 實際的數值是多少等等。有關 quantize 的參數若想知道可以在底下告訴我。

netron 視覺化範例

Pytorch 呢,怎麼畫出來這麼奇怪

很可惜,如果你今天只有 pytorch 的 model weight 檔 (.pth) ,是沒有辦法知道模型是怎麼相連的,這是因為 pytorch 動態圖的設計,只有在 forward 的時候會知道模型的圖是怎麼相連的。一個治標不知本的方法是將 pytorch model 變成編譯好的靜態圖 TorchScript (官網教學),再用 netron 得到視覺化的結果,但我建議有看懂 pytorch forward 的能力是非常重要的,想學習 pytorch 是必經之路。