Caffe_stu04_使用draw_net.py绘图网络层

背景:
系统:ubuntu18.04
caffe:使用的sudo apt install caffe-cpu 安装的caffe
同时使用git获得caffe的源码包
git clone https://github.com/BVLC/caffe.git

错误: from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ModuleNotFoundError: No module named ‘caffe._caffe’

查看网上教程可以用caffe源码包里面的 caffe/python/draw_net.py绘制网络结构图
但是网络上的环境和我主机上的环境不一致,直接使用会报错
image-20200628150801447

找不到caffe._caffe模块
错误猜想:
因为未编译caffe源码包导致源码包中缺少部分文件
通过网上教程进行编译源码不通过
image-20200628151037725

这里我认为因为我安装caffe是成功了的,所需要的文件ubuntu上也肯定是存在的,只是源码包中的代码未能链接到。

查找了一下未能链接的原因:
image-20200628151319258

应该是源码包这里,存在caffe文件夹,所以在 draw_net.py执行过程中,代码优先链接到了这个文件夹,但这个文件夹里面又缺少 caffe._caffe模块

解决方法:

将该文件夹下的caffe隐藏掉,使得python代码自动到Ubuntu环境变量下去寻找caffe
这里的前提是Ubuntu中PATH中存在caffe,即输入caffe显示如下界面
image-20200628151936622

隐藏caffe文件夹

创建临时文件夹diminish(随便取的名字),然后将caffe移动到diminish文件里面

image-20200628152049796

结果

再次运行

1
python draw_net.py /home/hzq/caffe/mnist_my/lenet_train_test.prototxt ./img.png

image-20200628152212483

可以看到这里是连接到 /usr/lib/python3/dist-packages/caffe是成功了的,只是python里面缺少了 pydot模块。查看源码

image-20200628152557291

这里可以看到,代码是优先使用的 pydotplus模块,所以我采用安装的是 pip install pydotplus

继续报错: File “draw_net.py”, line 58, in main phase, args.display_lrm) TypeError: draw_net_to_file() takes from 2 to 4 positional arguments but 5 were given

image-20200628152743036

查看 draw_net.py代码,修改
image-20200628153030309

继续报错:File “/home/hzq/.local/lib/python3.6/site-packages/pydotplus/graphviz.py”, line 1960, in create ‘GraphViz’s executables not found’)

可以看到是系统中缺少 graphviz

image-20200628153119684

使用 sudo apt-get install graphviz 安装

image-20200628153308011

结果

再次执行 darw_net.py
并且执行 eog img.png 查看图片

image-20200628153341862

效果如下:

image-20200628153502863

原图如下:

img

再次使用 draw_net.py绘制

image-20200628154032419python draw_net.py --rankdir TB /home/hzq/caffe/myfile/examples/myfile_tostudy/myfile_tostudy_train_test.prototxt ./myimg.png
–rankdir TB 可以使图片从上到下的排列
在这里插入图片描述