版权声明:如需转载请评论告知并标明出处 https://blog.csdn.net/ShuqiaoS/article/details/83384467
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
再运行应该就可以了。