1. 程式人生 > >Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現)

Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現)

Caffe視覺化(一):網路結構視覺化(用Caffe自帶程式實現)

本文記錄瞭如何利用Caffe自帶的程式實現網路的視覺化,包括可能遇到的問題和解決方案。更新於2018.10.25。

文章目錄

視覺化

如果電腦中沒有protobuf或graphviz,請先按照說明安裝,再進行視覺化。

橫向視覺化

命令:

cd Caffe_root		#到安裝caffe的根目錄下
python/draw_net.py path/to/your/model/net.prototxt net.png		#執行draw_net.py,第一個變數為模型的prototxt所在的路徑(相對),第二個為期望儲存的路徑及檔名

執行成功以後,就可以在指定路徑看到網路結構圖啦。

縱向視覺化

Caffe預設的網路結構是從左到右畫,但是也可以實現上下繪製。

命令:

cd Caffe_root
python/draw_net.py --rankdir TB path/to/your/model/net.prototxt net.png

這樣畫出來的網路結構就是從上到下的啦。

視覺化後互動

安裝xdot(如果已經安裝請忽略這一步):

sudo apt install xdot

之後繪製網路結構並用xdot開啟:

cd Caffe_root
python/draw_net.py --rankdir TB path/to/your/model/net.prototxt net.dot
xdot net.dot

可能遇到的問題

AttributeError: ‘google.protobuf.pyext._message.RepeatedScalarConta’ object has no attribute ‘_values’

遇到這個問題看到網上很多人說是protobuf的版本太高的緣故,但是博主親自試了一下,將現有的protobuf3.6.1解除安裝,重新安裝protobuf2.6.1。但是這個操作沒有解決問題,反而出現了一些由於版本過低導致的報錯,在此就不列舉了。而且為保證protobuf和libprotoc的版本相同,操作還是很麻煩的,因此博主在這裡介紹另一種解決方案:

找到檔案python/caffe/draw.py,將其94、96、98行變數後面的if ... else ...語句刪除,變成(89-98行):

        node_label = '"%s%s(%s)%skernel size: %d%sstride: %d%spad: %d"' %\
                     (layer.name,
                      separator,
                      layer.type,
                      separator,
                      layer.convolution_param.kernel_size[0],		#這裡被修改了
                      separator,
                      layer.convolution_param.stride[0],		#這裡被修改了
                      separator,
                      layer.convolution_param.pad[0]		#這裡被修改了)

重新編譯:

make clean
make -j 5 all tools		//這裡根據需要,如果不需要編譯工具只需要執行make -j 5就可以了
make pycaffe

再執行應該就可以了。