??本文介紹基于Python語言,對神經網路模型的結構進行可視化繪圖的方法,
??最近需要進行神經網路結構模型的可視化繪圖作業,查閱多種方法后,看到很多方法都比較麻煩,例如單純利用graphviz模塊,就需要手動用DOT語言進行圖片描述,比較花時間;最終,發現利用第三方的ann_visualizer模塊,可以實作對已有神經網路的直接可視化,程序較為方便,本文對此加以詳細介紹,
??此外,如果需要在MATLAB中實作神經網路構建與簡單的可視化,大家可以查看MATLAB人工神經網路ANN代碼;如果要借助軟體或在線工具進行不需要代碼的神經網路可視化,可以查看我們后期的博客,
??相關環境的版本資訊:Anaconda Navigator:1.10.0;Python:3.8.5,
??首先,下載與安裝必要的模塊ann_visualizer,打開Anaconda Prompt (Soft),

??在彈出的界面中輸入:
pip install ann_visualizer
??即可完成ann_visualizer模塊的安裝,

??接下來,我們就可以借助以下僅僅一句代碼對神經網路模型進行可視化了,
ann_viz(DNNModel,view=True,filename='G:/CropYield/02_CodeAndMap/01_SavedPicture/MyANN.gv',title='ANN')
??其中,DNNModel就是我們已經建立好的神經網路模型,任意神經網路模型均可——可以是一個簡單的淺層人工神經網路,也可以是一個相對復雜的全連接深度神經網路;view表示是否在代碼執行后直接顯示繪圖結果;filename是繪圖結果的保存位置,需要以.gv結尾;title就是神經網路圖片的名稱,
??在這里,我就直接以Python TensorFlow深度神經網路回歸:keras.Sequential中介紹并建立的深度神經網路加以可視化,
??第一次運行代碼時發現,出現以下報錯:

??報錯提示我沒有安裝graphviz模塊,但其實之前在進行隨機森林決策樹的可視化(也就是Python實作隨機森林RF并對比自變數的重要性)時,早已經將這一模塊安裝過了,并且當時用到graphviz這一模塊的代碼也沒有報錯,通過查閱,發現這里需要重新安裝一下python-graphviz這個新的模塊,因此我們打開Anaconda Prompt (Soft),輸入代碼:
conda install python-graphviz
??如下圖所示:

??安裝之后這里就不報錯啦~
??結果緊接著又報出了新的錯誤,說我的keras模塊沒有安裝:

??這就不對了,明明在進行深度神經網路構建時都沒有出現問題,甚至在這一句報錯的下方連深度神經網路的誤差繪制曲線都能顯示(誤差曲線的精度的確很差,大家不用在意~因為這里我們僅僅是做一個示范,所以Epoch次數就調得很小),說明keras模塊應該是沒問題的,
??隨后考慮到,這里報錯的keras是在ann_visualizer的檔案環境下,可能是環境不同導致的,打開Anaconda Navigator,在base (root)環境下確實找不到keras:

??那么我這里就圖方便,直接在base (root)環境下再安裝一個keras,安裝方法同上,輸入代碼即可:
pip install keras

??然后這里就不報錯啦~
??接下來,經過多次嘗試發現,這一方法進行神經網路可視化時,一是不能存在正則化層與BatchNormalization層;二是LeakyReLU層與Dropout層的總數量不能過多,否則繪圖結果會出現問題——這就顯得這一可視化方法稍微有點雞肋了,但是其對于基本的神經網路繪圖而言其實也已經很不錯了,因此,我就將Python TensorFlow深度神經網路回歸:keras.Sequential中的神經網路上述對應的層洗掉或注釋掉,
??如下圖,首先,將當初我的代碼對應的LeakyReLU層與Dropout層注釋掉:

??然后執行代碼,即可進行神經網路的可視化,且繪制出的圖將會自動打開在PDF閱讀軟體中,如下圖(版面有限,這里就只是繪圖結果的一部分),

??還是很不錯的~我們還可以直接將其轉換為圖片格式,看起來就更直觀了:

??如果再取消Dropout層的注釋,即繪圖時加上Dropout層,也還是很不錯的:

??如果我們再加上LeakyReLU層,就成了這個亂七八糟、不太正確的樣子(原圖實在太大了,就只給大家截取圖片的一部分):

??可以看到,這樣的話就有些問題了,
??最后,我們看一下這個ann_visualizer第三方庫的源代碼,可以看到該庫支持繪圖的不同種類神經網路層;如果大家的神經網路包含這些層,就可以用ann_visualizer這一第三方庫進行繪圖,

??至此,大功告成,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544418.html
標籤:其他
