使用latex畫好看的深度學習模型圖(基於Windows平臺)

論文裏需要畫出簡潔美觀的深度學習模型圖,如果採用PPT或者Visio一筆一筆畫那麼是一項非常耗時耗力的任務。想到現在深度學習這麼火熱,應該有相關的自動畫圖工具。在網上找了一些工具,最後確定了一款功能非常強大且作圖非常美觀的的工具——PlotNeuralNet。該軟件下載地址爲:https://github.com/HarisIqbal88/PlotNeuralNet

使用該軟件可以作出一些非常美觀的深度學習模型圖,如下所示:

                                                                                              UNet結構圖

                                                                                                     FCN8結構圖

由於該軟件需要配合latex,在windows平臺下遇到了幾個問題。下面將整個安裝和使用過程進行介紹。

1. 安裝CTex

爲了能夠使用latex進行作圖,需要安裝相關環境。在Windows下面比較方便的一種方法就是使用CTex,該軟件已經附帶相關的常用latex庫 MiKTeX等。下載地址: http://www.ctex.org/CTeXDownload/        下載對應的穩定版即可。下載後根據提示進行安裝。

2. 升級Tikz

一般情況下,安裝的CTex安裝包默認包含了畫圖相關的Tikz/PGF庫,但是其版本都比較舊,需要更新一下才能使用PlotNeuralNet(這一點非常重要,否則下載下載下來的PlotNeuralNet是沒有辦法正常編譯運行的)。Tikz下載網站:https://sourceforge.net/projects/pgf/files/?source=navbar

單擊“download”即可下載。下載下來後解壓該文件夾,其中包含三個子文件夾:doc、source、tex。將三個子文件夾複製到CTex安裝目錄下的MikTex文件夾下,完成覆蓋替換。

文件替換完成後,打開WinEdit 7.0編輯器,依次單擊菜單欄 “TeX”—“MikTeX”—“MikTeX Options”,在彈出的對話框中單擊“Refresh FNDB”按鈕,完成庫更新操作,如下圖所示:

這樣就實現了Tikz的升級。

3.  使用測試

雙擊打開PlotNeuralNet下examples\Unet文件夾下的Unet.tex文件,在WinEdt 7.0編輯器中單擊

完成編譯和pdf生成。在當前目錄下會生成對應的pdf圖像文件。

4.  定製化使用

最後,看一下如何按照我們的實際需求來生成圖像。主要分兩個步驟。

(1)編寫Python腳本用於生成tex文件

(2)編譯並執行tex文件生成圖像對應的pdf文件

PlotNeuralNet中已經提供了相關的使用案例。打開pyexamples文件夾,找到其中的test_simple.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()

上述文件定義了一個簡單的網絡結構,對照代碼讀者只需要依葫蘆畫瓢的添加結構就可以。完成以後運行該python腳本,正常運行後在本地會生成一個同名的tex文件。使用CTex打開該tex文件並按照步驟3中的方式編譯並生成,在本地會生成對應的pdf文件,如下圖所示:

 

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