caffe 中使用 draw_net.py 无法绘图问题解决汇总

这是学习笔记,我把遇到的 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# 
好了,没有消息就是最好的消息,输出成功^^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值