背景:
系统: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
绘制网络结构图
但是网络上的环境和我主机上的环境不一致,直接使用会报错
找不到caffe._caffe模块
错误猜想:
因为未编译caffe源码包导致源码包中缺少部分文件
通过网上教程进行编译源码不通过
这里我认为因为我安装caffe是成功了的,所需要的文件ubuntu上也肯定是存在的,只是源码包中的代码未能链接到。
查找了一下未能链接的原因:
应该是源码包这里,存在caffe文件夹,所以在 draw_net.py
执行过程中,代码优先链接到了这个文件夹,但这个文件夹里面又缺少 caffe._caffe
模块
解决方法:
将该文件夹下的caffe隐藏掉,使得python代码自动到Ubuntu环境变量下去寻找caffe
这里的前提是Ubuntu中PATH中存在caffe,即输入caffe
显示如下界面
隐藏caffe文件夹
创建临时文件夹diminish(随便取的名字),然后将caffe移动到diminish文件里面
结果
再次运行
python draw_net.py /home/hzq/caffe/mnist_my/lenet_train_test.prototxt ./img.png
可以看到这里是连接到 /usr/lib/python3/dist-packages/caffe
是成功了的,只是python里面缺少了 pydot
模块。查看源码
这里可以看到,代码是优先使用的 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
查看 draw_net.py
代码,修改
继续报错:File “/home/hzq/.local/lib/python3.6/site-packages/pydotplus/graphviz.py”, line 1960, in create ‘GraphViz’s executables not found’)
可以看到是系统中缺少 graphviz
使用 sudo apt-get install graphviz
安装
结果
再次执行 darw_net.py
并且执行 eog img.png
查看图片
效果如下:
原图如下:
再次使用 draw_net.py
绘制
python draw_net.py --rankdir TB /home/hzq/caffe/myfile/examples/myfile_tostudy/myfile_tostudy_train_test.prototxt ./myimg.png
–rankdir TB 可以使图片从上到下的排列