【caffe】问题记录:"caffe.LayerParameter" has no field named "batch_norm_param".

  今天使用caffe训练resnet50的一个二分类模型,在模型训练好后,打算用Python脚本加载网络定义文件deploy.prototxt测模型输出的准确率时,出现了如下错误,折腾了好久才解决,在此记录一下,为同样碰到此问题的人提供一个trouble shooting的思路。

[libprotobuf ERROR google/protobuf/text_format.cc:274] Error parsing text-format caffe.NetParameter: 25:26: Message type "caffe.LayerParameter" has no field named 
"batch_norm_param". WARNING: Logging before InitGoogleLogging() is written to STDERR F1113 00:15:43.599743 701 upgrade_proto.cpp:928] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: /home/****/ResNet50/deploy.prototxt *** Check failure stack trace: *** 已放弃 (核心已转储)

分析:

  ①首先,根据打出的日志,找到deploy.prototxt文件出错的位置,如下:


                                 

  再查看使用的caffe版本是否含有该层及参数,路径及文件如下:

  

  打开该文件,若找不到错误显示的参数则是caffe版本的原因(缺少该层的定义文件,下载更新版本的caffe再编译安装);

  若找到该参数,说明使用的caffe没有问题(和我一样),如下:

  

  ②检查使用的caffe是否编译了Python接口,建议输入以下命令进行重新编译一遍,

make clean
make all -j4
make test -j4
make runtest
sudo make pycaffe

  ③检查Python脚本是否添加了caffe的Python接口到系统变量,如下:

caffe_root = '/home/*****/ssd-caffe/'  # 修改成你的Caffe项目路径
sys.path.append(caffe_root + 'python')
import caffe

  ④如果还未解决问题,则检查你的计算机是否编译了多个版本的caffe,此时我们需要查看~/.bashrc文件,我们在脚本中即使添加了使用的caffe到Python系统环境变量,系统还是会调用~/.bashrc文件中的Python默认路径,打开该文件,export出你使用的caffe的Python环境路径,如下:

vi ~/.bashrc

  

source ~/.bashrc

  OK,问题解决!重新run一下,程序顺利跑通。

  

  

猜你喜欢

转载自www.cnblogs.com/White-xzx/p/9950057.html
今日推荐