这篇文章记录了我运行python时遇到的错误,以及我的解决方法,可能不够全面,欢迎大家一起讨论,补充
1. import caffe 报错:No module named caffe
原因:没有添加caffe/python目录到bash shell中 ,或者是添加了没有source
解决:在~/.bashrc文件中添加export PYTHONPATH="/home/caffe-master/python:$PYTHONPATH",执行命令source ~/.bashrc
备注:export PYTHONPATH="/home/caffe-master/python:$PYTHONPATH" 里:
“export PYTHONPATH=” 和 “:$PYTHONPATH”是固定不变的,/home/caffe-master/python是变量,需要根据自己机器中caffe/python的路径设置
2. import caffe 报错:No module named _caffe
原因:caffe每次重新编译后都需要编译pycaffe
解决:make pycaffe
3. ./build/tools/caffe: No such file or directory
原因:路径错误,需要输入正确的相对路径或者绝对路径
解决:网上找的资料,运行caffe的代码都是 ./build/tools/caffe train -solver solver.prototxt(盲写的,不知道记忆是否准确),但是想要正确运行,首先要搞清楚这几个参数的含义:
./build/tools/caffe:第一个参数是Caffe框架的主要框架,由tools/caffe.cpp文件编译而来。默认的位置在caffe-master下,即/home/caffe-master/build/tools,但是我运行时的路径是 home/caffe-master/models/CCCC,所以我第一个参数应该是../../build/tools/caffe 。(写的比较详细,适合和我一样第一次运行caffe的小白。)
train/test:第二个参数,表示训练网络或测试网络
solver:第三个参数,表明使用了哪个solver.prototxt文件,solver.prototxt里定义了使用哪个网络模型。和第一个参数一样,需要写对路径
4. img.txt图像列表中图像路径和图像标签之间的空格只能有一个,训练集lmdb文件的标签要从零开始
描述:我的caffe训练和测试数据是自己整理的,所以踩了好多好多的坑
img.txt文件每行的格式都是:img_path+一个空格+标签,我以为caffe会更加智能一些,比如自动split字符串,所以我中间加了四个空格,结果我想多了 果然报错
这俩错误都忘了截图记录,所以不记得错误原因是什么了,不过错误都落在我处理数据有疑问的范围,这是唯一值得欣慰的地方了
5. Opened lmdb /data/xueru/wiki_data/wikipedia_dataset/mylmdb_temp
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
反正看问题描述,就是lmdb文件报错了
原因一:lmdb没有写入,lmdb为空
import lmdb
env = lmdb.open('lmdb_path') #打开出错的lmdb文件
txn = env.begin()
print txn.stat()['entries'] #输出lmdb样本个数
解决:txn.put() 之后要统一 txn.commit(),再 env.close()
原因二:在其他博客看到可能是通道数量问题(channel)
总之就是lmdb出错了 要仔细排查
6. Check failed: width <= img_width (224 vs. 168)
原因:训练样本的图像尺寸太小,在池化层pool5的时候,输入图像的尺寸已经小于核的大小了,pooling之后,下一步输入就变成了0x0,因此会报错。
解决:在caffe的输入层设置宽度和高度即可(new_height和new_width)。
image_data_param {
source: "ImageNet List Path"
batch_size: 64
shuffle: true
new_height: 256 #设置图像高度
new_width: 256 #设置图像宽度
}
7. Check failed: FLAGS_model.size() > 0 (0 vs. 0) Need a model definition to score.
应该是caffe测试code出错了
解决一:把caffe运行代码中 train 改为 test
解决二:执行的脚本中多空格(看网上好多人这么说,搬运过来)
感觉这个错误就是运行caffe的代码有误(如果我猜错了,请告诉我( ̄▽ ̄)~*)
8. Unknown bottom blob 'data' (layer 'data/bn', bottom index 0)
不记得了
9. Check failed: mdb_status == 0 (2 vs. 0) No such file or directory
原因一:.prototxt文件里的路径错误,检查路径
原因二:权限问题,执行命令时加sudo(这个也是从网上搬运过来的)
生命不止,bug不休,未完待续。。。。