这是学习笔记,我把遇到的 draw_net.py 各类问题集中说明一下:
1、错误关键词:ImportError: /homedata/aistudy_data/caffe_data/caffe-master/python/caffe/_caffe.so: undefined symbol: _ZN5caffe3
详细描述:
/homedata/aistudy_data/caffe_data/caffe-master# python ./python/draw_net.py /homedata/aistudy_data/caffe_data/caffe-master/examples/cifar10/cifar10_quick_train_test.prototxt ./cifar10_quick_train_test.prototxt.png --rankdir=BT
Traceback (most recent call last):
File "./python/draw_net.py", line 8, in <module>
import caffe
File "/homedata/aistudy_data/caffe_data/caffe-master/python/caffe/__init__.py", line 1, in <module>
from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
File "/homedata/aistudy_data/caffe_data/caffe-master/python/caffe/pycaffe.py", line 13, in <module>
from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: /homedata/aistudy_data/caffe_data/caffe-master/python/caffe/_caffe.so: undefined symbol: _ZN5caffe3NetIfE21CopyTrainedLayersFromERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
解决方案:
用caffe绘制网络图出现这个错误,是因为编译的时候,没有开启Makefile.config的这个选项:
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1 # 使用此行即可,然后重新编译caffe
随后,你应该重新编译caffe
/homedata/aistudy_data/caffe_data/caffe-master# make all -j8
可能遇到如下错误:
2、错误关键词:undefined reference to `caffe::ReadImageToDatum
详细描述:
.build_release/tools/extract_features.o:CXX/LD -o .build_release/examples/cpp_classification/classification.bin
In function `int feature_extraction_pipeline<float>(int, char**)':
extract_features.cpp:(.text._Z27feature_extraction_pipelineIfEiiPPc[_Z27feature_extraction_pipelineIfEiiPPc]+0x162): undefined reference to `caffe::Net<float>::Net(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, caffe::Phase, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const*)'
extract_features.cpp:(.text._Z27feature_extraction_pipelineIfEiiPPc[_Z27feature_extraction_pipelineIfEiiPPc]+0x1a4): undefined reference to `caffe::Net<float>::CopyTrainedLayersFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
.build_release/tools/convert_imageset.o: In function `main':
convert_imageset.cpp:(.text.startup+0xab2): undefined reference to `caffe::ReadImageToDatum(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&Makefile:635: recipe for target '.build_release/tools/extract_features.bin' failed
, intmake: *** [.build_release/tools/extract_features.bin] Error 1
, int, int, bool, std::__cxx11::basic_string<char,make: *** Waiting for unfinished jobs....
std::char_traits<char>, std::allocator<char> > const&, caffe::Datum*)'
collect2: error: ld returned 1 exit status
Makefile:635: recipe for target '.build_release/tools/convert_imageset.bin' failed
make: *** [.build_release/tools/convert_imageset.bin] Error 1
……
这是因为你重新编译caffe,没删除libcaffe.so
删除之: /homedata/aistudy_data/caffe_data/caffe-master# rm /usr/local/lib/libcaffe.so
然后编译pycaffe
/homedata/aistudy_data/caffe_data/caffe-master# make pycaffe -j8
应该没问题了
3、错误关键词:ImportError: No module named pydot
详细描述:
/homedata/aistudy_data/caffe_data/caffe-master# python ./python/draw_net.py /homedata/aistudy_data/caffe_data/caffe-master/examples/cifar10/cifar10_quick_train_test.prototxt ./cifar10_quick_train_test.prototxt.png --rankdir=BT
Traceback (most recent call last):
File "./python/draw_net.py", line 9, in <module>
import caffe.draw
File "/homedata/aistudy_data/caffe_data/caffe-master/python/caffe/draw.py", line 22, in <module>
import pydot
ImportError: No module named pydot
解决方案:
安装:/homedata/aistudy_data/caffe_data/caffe-master# python -m pip install pydot
4、错误关键词:OSError: [Errno 2] "dot" not found in path.
详细描述:
/homedata/aistudy_data/caffe_data/caffe-master# python ./python/draw_net.py /homedata/aistudy_data/caffe_data/caffe-master/examples/cifar10/cifar10_quick_train_test.prototxt ./cifar10_quick_train_test.prototxt.png --rankdir=BT
Drawing net to ./cifar10_quick_train_test.prototxt.png
Traceback (most recent call last):
File "./python/draw_net.py", line 62, in <module>
main()
File "./python/draw_net.py", line 58, in main
phase, args.display_lrm)
File "/homedata/aistudy_data/caffe_data/caffe-master/python/caffe/draw.py", line 314, in draw_net_to_file
fid.write(draw_net(caffe_net, rankdir, ext, phase, display_lrm))
File "/homedata/aistudy_data/caffe_data/caffe-master/python/caffe/draw.py", line 290, in draw_net
display_lrm=display_lrm).create(format=ext)
File "/usr/local/lib/python2.7/dist-packages/pydot.py", line 1867, in create
raise OSError(*args)
OSError: [Errno 2] "dot" not found in path.
解决方案:
安装:/homedata/aistudy_data/caffe_data/caffe-master# apt-get install graphviz
最后运行(示例):
/homedata/aistudy_data/caffe_data/caffe-master# python ./python/draw_net.py /homedata/aistudy_data/caffe_data/caffe-master/examples/cifar10/cifar10_quick_train_test.prototxt ./cifar10_quick_train_test.prototxt.png --rankdir=BT
Drawing net to ./cifar10_quick_train_test.prototxt.png
/homedata/aistudy_data/caffe_data/caffe-master#
好了,没有消息就是最好的消息,输出成功^^