Keras網路結構視覺化工具

2021-08-07 22:44:03 字數 1926 閱讀 8344

keras的utils包裡帶了乙個vis_utils元件(2.0.2版本),該元件應該就是早先版本的keras當中的visualize_utils元件。利用該元件,可以很輕鬆地用一行**,將已建立神經網路模型的示意圖輸出到一張。例如,乙個簡單的多層前饋網路模型,可以按照如下模式輸出 

雖然不是特別詳細,不過也算得上幫助理解的示意圖,因此有必要開發一下這個功能。而由於該視覺化元件依賴於一些外部的應用,要想正常使用也需要一些額外的配置。 

keras的視覺化依賴於pydot和graphviz兩個元件,首先介紹一下graphviz的安裝。

graphviz是乙個用於視覺化的應用。在python中,呼叫其功能需要具備兩個條件:

我裝的是目前為止的最新版,也就是2.38版本 

pip install graphviz
pydot雖然只涉及python庫,但情況反而比graphviz還複雜一點……首先,寫此文之時,最新的相容python 3.5的pydot版本已經是1.2.3,但該版本已經不能與新版的keras相容。因為,新版pydot廢棄了find_graphviz()方法,而keras的vis_utils中,其_check_pydot_()函式仍然會呼叫pydot.find_graphviz()方法,故會報錯。而能夠相容keras的pydot版本為1.1.0,這一問題原文形容在此:keras中神經網路視覺化模組keras.utils.visualize_util 的安裝配置與錯誤解決辦法

解決這一問題,如果你正在使用比較新版本的keras(如目前的2.0.2),最簡便的方式是安裝pydot_ng。目前,2.0.2版本的keras已經以import pydot_ng來取代了pydot,而pydot_ng則可以直接通過pip安裝:

pip install pydot_ng
安裝完成後,需要建立pydot到graphviz應用程式的連線,讓pydot可以找到graphviz的應用。官方建議的方式是,在環境變數path中新增graphviz的bin目錄,而find_graphviz()方法會在path變數、登錄檔、常用目錄等地方嘗試搜尋graphviz的應用。 

然而一來我第一次嘗試將graphviz/bin目錄新增到path中後,find_graphviz()依然找不到目標程式;二來因為電腦裡裝了不少環境,path裡再加乙個無非是添亂……因此這裡給出乙個徹底解決方案:直接改pydot.find_graphviz()的**。 

進入「$anaconda安裝目錄$/lib/site-packages/pydot_ng」目錄,用**編輯器開啟「__init__.py」檔案,定位到< line 615>的位置,在**注釋「# failed to find graphviz」之前加入以下**塊:

# local method

mygraphvizpath = '你的graphviz安裝目錄\\bin'

progs = __find_executables(mygraphvizpath)

if progs is not none:

return progs

import pydot_ng

pydot_ng.find_graphviz()

如果正常找到程式的話,你會得到如下輸出 

這樣,keras就可以正常呼叫pydot_ng和graphviz了。

沒想到寫到這裡就寫了一堆……cifar-10的測試下次再寫吧,恩,就醬= =

Keras內建視覺化工具

keras內建視覺化工具keras.utils.vis utils模組提供了生成keras模型拓撲圖的函式。該函式將畫出模型拓撲結構圖,並儲存成。模型視覺化 from keras.utils import plot model plot model model,to file model.png p...

Pytorch網路結構視覺化

現在用的這個 net load model net,args.trained model,args.cpu for name,param in net.named parameters print param.size name,下面這個報錯 pytorch網路結構視覺化 使用這個 超級強悍 可以通...

Pytorch 網路結構視覺化

conda install graphviz conda install tensorwatch import sys import torch import tensorwatch as tw import torchvision.models alexnet model torchvision....