Keras 也能幫忙畫模型

John Hu
No silver bullet
Published in
3 min readOct 2, 2020

想不到吧!Keras 除了可以訓練 AI 模型之外,它也可以幫我們把模型的長相給畫出來:就是這個 API 。醬糊小弟原本以爲單純呼叫這個 API 就可以把圖給產生出來了,但是,萬萬沒想到,我們還需要安裝一些軟體。這篇,我們就將討論一下:1. 要安裝那些軟體、2. API 參數、3. 一些簡單的範例。

Photo by Christian Fregnan on Unsplash

安裝

安裝 pydot

這部分相當簡單,我們可以透過 pip 的指令來安裝 pydot

pip install pydot

安裝 Graphviz

原本以爲我們要用 pip install graphviz 。但是,不是這樣的,它要的是 Graphviz 的外部程式,簡單講就是要有 dot 這個指令。

安裝 Graphviz 可以直接上官網下載對應的作業系統版本:https://graphviz.org/download/。我們在安裝的時候要留意是不是 Graphviz 的執行檔有在 PATH 的路徑中 dot.exe ,我們可以開一個 PowerShell 或是 Shell 輸入 dot 試看看。如果沒有的話,記得把它給加進去。

API

這個 API 的參數相對直覺,我們可以給下面的這些參數:

  • model:就是要畫出來的 model;
  • to_file:把畫出來的檔案儲存在那個位置,預設值是 model.png;
  • show_shapes:在圖片上面顯示這個節點的大小;
  • show_dtype:在圖片上顯示這個節點的參數的資料形態,不過小弟在 Keras 2.4.3 中居然找不到這個參數,如果,各位有人知道的話,還麻煩跟小弟說一聲;
  • show_layer_names:在圖片中顯示這個節點的名字;
  • rankdir:跟 pydot 說這張圖片要直的畫還是橫的畫;
  • expand_nested:根據文件是顯示內包的結構,但是小弟不大瞭解怎麼產生出這種結構,所以,如果有人知道的話,還麻煩跟小弟說一聲;
  • dpi:就是圖片的 dpi;
  • subgraph:產生 pydot.Cluster 的物件,這邊也是小弟不大瞭解的地方。

畫圖範例

這邊我們使用 jupyter notebook 來測試這個 API,可以在這裡找到完整的檔案

首先是一個簡單的直式跟橫式 model:

直式建議模型
橫式建議模型

接着我們可以作出一個有分叉的 model:

分叉模型加上 Dense name

最後,我們也可以試一下調高 DPI:

完整的程式碼請參考 jupyter notebook 的內容

--

--