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

本文详细介绍如何使用Caffe自带程序实现神经网络结构的横向与纵向可视化,包括具体命令行操作步骤,解决常见错误AttributeError的方法,以及如何通过xdot进行交互式查看。

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

再运行应该就可以了。

更多内容,欢迎加入星球讨论。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值