使用python 进行caffe 数据可视化的时候可能会遇到下面的错误:
No to_python (by-value) converter found for C++ type: boost::shared_ptr<caffe::Blob<float> >
No to_python (by-value) converter found for C++ type: boost::shared_ptr<caffe::Net<float> >
No to_python (by-value) converter found for C++ type: boost::shared_ptr<caffe::Layer<float> >
上面的错误是由于boost-1.60.0 引起的,如果是boost-1.59.0,就没有上面问题,但是很容易无意中升级安装包的时候把boost也升级了,就会造成上面的问题。
解决的办法是在caffe/python/caffe/中对 _caffe.cpp 进行相应的修改:(参考:https://github.com/BVLC/caffe/issues/3494)
boost::python::register_ptr_to_python<boost::shared_ptr<Blob<Dtype> > >();
boost::python::register_ptr_to_python<boost::shared_ptr<Net<Dtype> > >();
boost::python::register_ptr_to_python<boost::shared_ptr<Layer<Dtype> > >();
// End fix
然后回到caffe 目录, 重新编译pycaffe:
caffe$ make pycaffe -j16
其中-j16 是使用多核cpu 进行编译,可以快速完成,问题解决。