caffe 错误
一些caffe错误
- 训练时很快梯度爆炸,loss猛增至nan
如果找不到数据上的原因的话,可以怀疑caffe框架有问题,换用其它版本试试。比如我遇到的问题是在训练时使用了Accuracy层,而该层的实现代码在某次更新中GPU代码存在bug,复用了其它层的变量导致对loss的计算产生了影响。训练时去掉accuracy层就好了,测试时使用该层不受影响,或者使用这里的补丁https://github.com/BVLC/caffe/pull/5987 。 Check failed: error == cudaSuccess (9 vs. 0) invalid configuration argument
可能原因是GPU硬件配置低,线程数不够,超过了它能承受的范围。caffe不支持小于2.0计算能力的nvidia GPU,尝试调小batch size或者降低图片缩放的大小,使用较小的网络如ZF net或者VGG_CNN_M_1024试试。
如果硬件没问题那么如果Faster R-CNN的smooth L1 loss层报错,RPN未产生候选区域,导致CAFFE_GET_BLOCKS分配到的block数为0,将配置文件中的bg_thresh_lo设置为0,可以增加roi的数量,然而有时候仍然不行。
将CAFFE_GET_BLOCKS(count)替换为std::max(1, CAFFE_GET_BLOCKS(count))也可以解决一部分这个问题。
如果问题仍未解决,请仔细检查训练数据,最终发现数据中某个样本是负样本(Faster R-CNN的该标签中没有目标标记),导致计算smooth l1损失时ground truth为0,因此导致了cuda的block数为0.
再来看Invalid Configuration Argument的一般原因:Invalid Configuration Argument - This error means that the dimension of either the specified grid of blocks (dimGrid) , or number of threads in a block (dimBlock), is incorrect. In such a case, the dimension is either zero or the dimension is larger than it should be. This error will only occur if you dynamically determine the dimensions.
- 编译时报错:convert_imageset.cpp undefined reference to `caffe::ReadImageToDatum
原因:之前安装caffe时在/usr/lib/libcaffe.so创建了符号链接,删除即可。 - 编译时报错:undefined reference to 'omp_set_num_threads'
在Makefile或其include的Makefile.config中对gcc编译选项加入-fopenmp:
CXXFLAGS += -fopenmp LDFLAGS += -lgomp
注意不要加入到COMMON_FLAGS中,因为其被nvcc用到,而nvcc没有openmp选项。 - 在运行caffe的时候,如果出现如下报错
free(): invalid pointer: 0x00000000020663b0
可能是 glibc malloc/free 的问题, 可用TCMalloc库替代:
# 下载tcmalloc库.so sudo apt install libtcmalloc-minimal4 # 可选方式二: 性能分析工具(全家桶): apt install google-perftools # 对于要执行的程序通过preload替换掉原malloc功能库 export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4"
Google开源的TCMalloc,在C++小对象频繁创建销毁的处理上拥有非常大的优势。tcmalloc速度快,但是耗内存,不适合直接与caffe链接到一块, 从caffe的提交历史可以看到曾经加入了tcmalloc后来又删除了.
在使用PyTorch或者Tensorflow等框架时也可能遇到这个问题.
参考How To Use TCMalloc? 与 TCMalloc : Thread-Caching Malloc caffe的python接口.
caffe的python接口很容易因为C++代码的改动编译而出现运行时错误. 解决方法是删除python/caffe/下的caffe.so 或者重新编译整个工程.
其它错误, 每次修改caffe的C++代码并编译caffe时make或cmake工具仅编译改动过的文件及依赖文件,可能会出现一些很奇怪的运行时错误. 这种情况下的首选尝试方法就是重新编译整个工程. (我遇到很多次这种情况了, 可能是Makefile写的不够完善)
caffe 错误的更多相关文章
- caffe错误
一些caffe错误 训练时很快梯度爆炸,loss猛增至nan 如果找不到数据上的原因的话,可以怀疑caffe框架有问题,换用其它版本试试.比如我遇到的问题是在训练时使用了Accuracy层,而该层的实 ...
- 训练超参数, 出现 Cannot use GPU in CPU-only Caffe 错误?
当我们用MNIST手写体数字数据库和LeNet CNN 模型训练超参数,运行 examples/mnist/train_lenet.sh是出现Cannot use GPU in CPU-only Ca ...
- caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题
之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...
- caffe安装编译问题-ImportError: No module named caffe
问题描述 ~/Downloads/caffe$ python Python (default, Dec , ::) [GCC ] on linux2 Type "help", &q ...
- caffe小问题汇总(持续更新)
PS:所有问题均在caffe-windows下产生 1.为什么AlexNet中,InnerProduct_Layer(fc8)层的输出可以直接作为Accuracy_Layer层的输出? 答:首先,我们 ...
- caffe搭建--缺少 skimage-缺少 google.protobuf.internal.-caffe搭建--ipython--ubuntu16.04+ caffe+ ipython
mkdir build && cd build cmake .. make pycaffe -j4 sudo vim /etc/profile---- export PYTHONPAT ...
- Caffe RPN:把RPN网络layer添加到caffe基础结构中
在测试MIT Scene Parsing Benchmark (SceneParse150)使用FCN网络时候,遇到Caffe错误. 遇到错误:不可识别的网络层crop 网络层 CreatorRegi ...
- Ubuntu Anaconda3 环境下安装caffe
安装Python环境 本人环境为Anaconda3 ,可参照 https://blog.csdn.net/ctwy291314/article/details/86571198 完成安装Python2 ...
- ubuntu14.04 cpu-ssd
1. ssd-caffe部署 五年半前老笔记本,没有GPU(其实有,AMD的,不能装CUDA),之前装过CPU版的Caffe 新建一个目录,然后参考网上步骤 sudo git clone https: ...
随机推荐
- sql 某字段存储另一个表的多个id值并以逗号分隔,现根据id去中文并拼接同样以逗号分隔
首先介绍用到的两个函数 charindex(要查找的表达式1,表达式2),返回值为表达式1在表达式2中的下标,未找到则返回0.(sql的下标是从1开始的),例如 select charindex('s ...
- 这是一个数学题牛客训练赛E
题目描述 https://www.nowcoder.net/acm/contest/78/E 已知有一个n+1个数的数列,对于给定的A0和An ,当i满足当1<=i<=n-1时有 ...
- 12.24daily_scrum
今天是平安夜,大家开心地度过一个平安夜的同时,也完成了很多软件的调试工作,我们争取在下周前完成本阶段的所有调试工作. 具体工作如下: 具体工作: 小组成员 今日任务 明日任务 工作时间 李睿琦 软件调 ...
- 团队作业 week 14
0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出 ...
- Leetcode——58.最后一个单词的长度
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: &quo ...
- Java abstract interface与 interface的区别
我们常常遇到abstract class与 interface的区别,今天却遇到了abstract interface,感觉interface不用abstract再修饰了啊.结论:事实也确实如此,编译 ...
- [转帖]台积电近10万片晶圆报废,但7nm工艺将成2019营收主力
台积电近10万片晶圆报废,但7nm工艺将成2019营收主力 2019年02月18日 13:19 1784 次阅读 稿源:Expreview超能网 0 条评论 https://www.cnbeta.co ...
- HTTP消息头(HTTP headers)-常用的HTTP请求头与响应头
HTTP消息头是指,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件.HTTP消息头用来准确描述正在获取的资源.服务器或 ...
- query的set能添加多个
- python 模块之-configparser
python 模块configparser 配置文件模块 import configparser config = configparser.ConfigParser() config[&q ...