caffe训练或者测试报错:F0324 13:10:43.535276 16290 blob.cpp:33] Check failed: shape[i] <= 2147483647 / count_ (3000 vs. 2485) blob size exceeds INT_MAX
首先找到错误出处:blob.cpp,在caffe目录下的./src/caffe/blob.cpp
注意上述两个框内的代码,这个错误实际上是caffe对数据大小的一个限制,有时候,INT_MAX是在库文件中定义过的,大小为:2147483647,可以根据两个红框内的代码,判断,shape[i]是否超过了 2147483647 / count_,count_的值会随和for语句逐渐增大为num*channels*height*width;这里的num是每个批次网络读取的数据量,比如你的训练样本为20w,一次性读入,那么这个num就为20w,如果20w分为10个lmdb文件读入,那么一个批次是读取了2w,注意,这里的num,不是batch_size大小!!!channels是样本的通道,一般rgb图像为3通道;height与width即为样本的高宽。
解决方案:
当我们知道出错的原因后,那么解决办法就有以下几种:
1:调小这四个数,channels一般不会改,可以改变图像的高宽,一般由于需求,可能也不会改,那么最后可以调小每次网络读取数据的大小,将训练数据拆分成更多的批次读入
2:将下边的四行注释掉,重新编译caffe,新手不建议