Caffe可视化(一):网络结构可视化(用Caffe自带程序实现)

版权声明:如需转载请评论告知并标明出处 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

再运行应该就可以了。

猜你喜欢

转载自blog.csdn.net/ShuqiaoS/article/details/83384467