Check failed: shape[i] <= 2147483647 / count_ (3000 vs. 2485) blob size exceeds INT_MAX

这段时间在准备找实习,回顾深度学习调参经验的时候,突然想起以前工作站跑过的一个模型:基于faster-rcnn的人脸检测的模型,这是自己入坑时训练的第一个模型,从做数据到顺利跑完也花了两三天的时间,还是比较有意义的,也算是第一次亲眼见证了深度学习方法的效果之好。

但是在重新跑这个模型的时候,居然报了很多错。也难怪,那台工作站的环境重装过好多遍,再加上rbg大神写py-faster-rcnn的时候还是几年以前,代码有些部分只适合以前老版本的caffe。下面就把自己遇到的错误记录一下吧。

1、cudnn版本问题(这个错误的解决办法直接可以百度出来)

./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::createPoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, cudnnPoolingMode_t*, int, int, int, int, int, int)’:  
./include/caffe/util/cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, int, int, int, int, int, int)’  
         pad_h, pad_w, stride_h, stride_w));  

错误只复制了其中的一部分,这个错误是由于当前caffe版本中关于cudnn部分的代码与系统安装的cudnn版本不兼容(系统安装的cudnn较新),可以用 最新版caffe 中关于cudnn的代码文件替换caffe-faster-rcnn中关于cudnn的代码文件。

具体操作:

1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.

2. 将./include/caffe/layers里的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp, 都替换成最新版的caffe里的相应的同名文件。

3.将./src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。

2、F0324 13:10:43.535276 16290 blob.cpp:33] Check failed: shape[i] <= 2147483647 / count_ (3000 vs. 2485) blob size exceeds INT_MAX

在编译完成之后,跑测试程序的时候,即使测试图片的分辨率小到50*40,也会报这个错。caffe中blob的大小超过最大值了,记得以前跑这个程序的时候是没遇到过这个错的,用的是同样的文件居然反差那么大。google了很久,很多人遇到相同的错但是没遇到什么有用的办法。最后直接进到报错的文件caffe-fast-rcnn/src/caffe/blob.cpp,发现这个错是由下面两句造成的:

CHECK_GE(shape[i], 0);
CHECK_LE(shape[i], INT_MAX / count_) << "blob size exceeds INT_MAX";

caffe源码对blob大小的限制。我直接注释掉这两句,然后重新编译caffe。最后能成功跑起来模型!

上一张检测效果吧。。

Check failed: shape[i] &amp;lt;= 2147483647 / count_ (3000 vs. 2485) blob size exceeds INT_MAX       这段时间在准备找实习,回顾深度学习调参经验的时候,突然想起以前工作站跑过的一个模型:基于faster-rcnn的人脸检测的模型,这是自己入坑时训练的第一个模型,从做数据到顺利跑完也花了两三天的时间,还是比较...
caffe 训练或者测试 报错 :F0324 13:10:43.535276 16290 blob .cpp:33] Check failed: shape[i] <= 2147483647 / count_ (3000 vs. 2485) blob size exce eds INT _ MAX 首先找到错误出处: blob .cpp,在 caffe 目录下的./src/ caffe / blob .cpp
1、Check failed: shape[i] &lt;= 0x7fffffff / count_ (1000 vs. 684) blob size exce eds INT _ MAX 意思是图片大小过大,超出了 caffe 设定的 INT 值范围,一种最为简便的方法是将其中较大的图片re size 一下。还有就是改变其中 blob .cpp源码中的大小设定,然后重新 编译 caffe ,建议新手不要这么做。...
#include " caffe /common.hpp" #include " caffe /proto/ caffe .pb.h" #include " caffe /syncedmem.hpp" #inclu
Release original memory and hold new: template <typename Dtype> void Blob <Dtype>::Reshape(const vector< int >& shape) { CHECK_LE(shape. size (), k Max Blob Axes); count_ = 1; shape_.re size (shape. size ())
等着 caffe 没有膨胀到很大的程度把 caffe 的代码理一理 (1)第一次阅读 Caffe 的源码,给人的印象就是里面大量使用了gtest,确实也简化了不少代码,看起来很清晰。 (2) caffe 的文档是使用doxygen来生成的,这点在注释里面有体现,对于自己以后的项目也可以借鉴。 二、相关知识: (1)explicit关键字的作用是 overview整体上了解 caffe Blob Blob 成员变量 Blob 主要函数,核心在于 Blob 的使用实例以及其与opencv Mat的操作的相互转化(附带运行结果基于CLion) overview Blob Caffe 作为数据传输的媒介,无论是网络权重参数,还是输入数据,都是转化为 Blob 数据结构来存储,网络,求解器...
1、Check failed: datum_channels > 0 (0 vs. 0). train.prototxt中Datatype AnnotatedData和Data互换,changing data type from “AnnotatedData” to “Data” or “Data” to "AnnotatedData" layer { name: "Data1"
错误发现及分析当使用 caffe 训练网络的时候,出现如题错误,我们可以分析下日志,日志如下: 我们可以看出,在错误发生前生成的Top shape:64 2048 4 4 。也就是feature size 是4 × 4的。然后再看看pool5对应的pooling layer的设置: 发现pooling的核大小被设置成7,这就是问题的所在了。解决方案 改变输入图像的大小,可以使feature m
Invalid MEX-file '/home/abc/ caffe /matlab/+ caffe /private/ caffe _.mexa64': /usr/lib/libgdal.so.20: symbol TIFFReadRGBATileExt version LIBTIFF_4.0 not defined in file libtiff.so.5...
步骤大概是:建立一个train文件夹,里面放一个train.txt;建立一个test文件夹,里面放一个test.txt,然后分别运行以下两条bat命令: SET GLOG_logtostderr=1 convert_imageset.exe train/ train/train.txt convert_data_train pause SET ...
20160119 1、 今天尝试用alex网络模型做自己的识别任务,提示如下错误 Check failed: error == cudaSuccess (2 vs. 0) out of memory。 Google 之后 https://github.com/BVLC/ caffe /issues/682  发现是test的batch 设置过大导致,把batch改小就好了。 原来设置为5
使用 Caffe 跑 Google 的Inception V2 对输入图片的shape有要求,某些shape输进去可能会 报错 。 Inception model中有从conv和pooling层concat的操作,而conv和pooling的output输出计算方式不完全一样。解决方案: 1. 按照原来prototxt输出图片 2. 把concat层前面stride为2的conv层替换stride为