caffe 错误

一些caffe错误

  1. 训练时很快梯度爆炸,loss猛增至nan
    如果找不到数据上的原因的话,可以怀疑caffe框架有问题,换用其它版本试试。比如我遇到的问题是在训练时使用了Accuracy层,而该层的实现代码在某次更新中GPU代码存在bug,复用了其它层的变量导致对loss的计算产生了影响。训练时去掉accuracy层就好了,测试时使用该层不受影响,或者使用这里的补丁https://github.com/BVLC/caffe/pull/5987 。
  2. 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.

  3. 编译时报错:convert_imageset.cpp undefined reference to `caffe::ReadImageToDatum
    原因:之前安装caffe时在/usr/lib/libcaffe.so创建了符号链接,删除即可。
  4. 编译时报错:undefined reference to 'omp_set_num_threads'
    在Makefile或其include的Makefile.config中对gcc编译选项加入-fopenmp:
    CXXFLAGS += -fopenmp LDFLAGS += -lgomp
    注意不要加入到COMMON_FLAGS中,因为其被nvcc用到,而nvcc没有openmp选项。
  5. 在运行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
  6. caffe的python接口.
    caffe的python接口很容易因为C++代码的改动编译而出现运行时错误. 解决方法是删除python/caffe/下的caffe.so 或者重新编译整个工程.
    其它错误, 每次修改caffe的C++代码并编译caffe时make或cmake工具仅编译改动过的文件及依赖文件,可能会出现一些很奇怪的运行时错误. 这种情况下的首选尝试方法就是重新编译整个工程. (我遇到很多次这种情况了, 可能是Makefile写的不够完善)

转载于:https://www.cnblogs.com/makefile/p/caffe-errors.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发手气红包算法

lowest0.01元,最小金额 操作是整数,最小人民币单位是分,所以有2位小数,最少是0.01元 发金额totalBill 发n人,就取1到100的随机数n个 为了提高精度,把金额放大100倍 totalAmounttotalBill*100 n个人各取的随…

cs106a编程方法学作业解答(3)

此次作业要求我们做一个简单的打砖块游戏。 1 * File: Breakout.java2 * -------------------3 * Name:4 * Section Leader:5 * 6 * This file will eventually implement the game of Breakout.7 */8 9 import acm.graphics.*;10 import acm.program.*;11 import acm.ut…

vue从入门到进阶:简介(一)

前言 用了这么久的vue了,但是一直没有时间写个系列文章,现在抽一定时间总结下vue的知识点。 首先,Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。下面总…

linux堡垒机开源软件,Jumpserver开源堡垒机

Jumpserver开源跳板机系统部署1.简介Jumpserver使用Python / Django进行开发,遵循Web 2.0规范,配备了业界领先的Web Terminal解决方案,交互界面美观、用户体验好。Jumpserver采纳分布式架构,支持多机房跨区域部署,中心…

node截图服务可用性报告

2019独角兽企业重金招聘Python工程师标准>>> 前言 服务器端截图可以做什么? 个人观点:省去跟报表有关的EDM开发,直接从系统上截图,然后发图片给用户就搞定。剩下的自己脑补。 既然这么好,为毛不赶紧弄。…

C++的extern关键字

extern是一个声明,不是一个定义,A模块想应用B模块的一个函数或者变量,A模块包含B模块的头文件,并且在变量或者头文件前,加 extern,虽然编译的时候,找不到模块的定义,但是在连接的时候…

Linux网站访问的电脑占CPU,详解Linux如何查看当前占用CPU或内存最多的几个进程...

命令ps -aux | sort -k4nr | head -N命令详解:1、head:-N可以指定显示的行数,默认显示10行。2、ps:参数a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端…

Hi,博客园

Hi,博客园! 这是我在博客园的第一篇博文,主要是为了测试发布。 在以后的日子里我会陆续介绍ArcGIS soft的使用及Flex和JS的开发,以及开源GIS的开发,敬请关注。转载于:https://www.cnblogs.com/unitgis/p/4028171.html

java反射快速入门(二)

上一遍博文 , 简单介绍java 反射的常用接口,本遍博文, 我会结合项目开发的实际例子讲解下 java反射的使用 现在有个需求, 要将一个对象转换成xml格式, 或者将一串xml转换一个对象, 这时我们循序渐进, 先从最简单的入手 一: 方案① 场景 : NBA球员信息描述…

Myecplise Tomcat 启动很慢

今天突然遇到一个问题,tomcat在Myecplse启动非常慢,直接用tomcat自带的start.bat启动很快,如果通过Myeclipse启动会发现项目一直在实例化,最后发现是因为加了断点调试,断点忘了去掉了,这个恰恰影响了spring…

C#QQ邮箱验证

注意: QQ邮箱的简单邮件传输协议(SMTP)使用了SSL加密,必须启用SSL加密、指定端口。 QQ邮箱POP3/SMTP服务默认是关闭的,需要开启服务(设置>账户>开启服务)。 QQ邮箱若有独立密码&#xff0…

linux 文件 重命名 缓存,linux – rename()原子性和NFS?

参考:Is rename() atomic?我问的是类似的东西,但不完全相同,因为我想知道的是在使用NFS时依赖于rename()的原子性是否安全?这是我正在处理的一个场景 – 我有一个必须始终存在的’索引’文件.所以:>客户端创建一个新文件>客户端通过“…

Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法

原因:在安装Framework v4.0之后,再启用IIS,导致Framework没有完全安装 解决:开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行,输入以下命令: %windir%\\Microsoft.NET\\F…

ORACLE DATAGURARD配置手记

经过多次实践,参阅网上N多文章……最后还是配不成,可能本人悟性太低,无法体会高手的笔记。最终还是在前辈的帮助下完成。特用最平实的手法记录下来,以便如吾辈菜鸟能 看得懂。 运行Data Guard的条件 1、 在主库和从库的所有机器上…

浅谈ASP.NET框架

本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!! 本篇文章稍微偏原理且底层,有一定难度和且比较晦涩,文章粒度稍微粗些,更细粒度的,会在后续的文…

C语言之冒泡排序

假设要对含有n个数的序列进行升序排列,冒泡排序算法步骤是: 1、从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置; 2、第1趟结束后,…

eclipse常用的快捷键

2014年10月17日10:29:50 1.CtrlSpace 说明:内容助理。提供对方法,变量,参数,javadoc等得提示, 应运在多种场合,总之需要提示的时候可先按此快捷键。 注:避免输入法的切换设置与此设置冲突 2.Ctrl/ 说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl\ 3.CtrlShift/ 说明:添加…

linux sar 历史负载,查看负载、vmstat、top、sar以及nload命令

使用w查看系统负载1.w命令,查看系统负载:单位时间内使用cpu的活动的进程有多少个[rootweix01 ~]# w #load average 后面三个数字表示1分钟,5分钟,15分钟的负载值,最合适的是逻辑cpu数量与1分钟负载一致21:10:21 up 8 m…

【HDOJ】4358 Boring counting

基本思路是将树形结构转线性结构,因为查询的是从任意结点到叶子结点的路径。从而将每个查询转换成区间,表示从该结点到叶子结点的路径。离线做,按照右边界升序排序。利用树状数组区间修改。树状数组表示有K个数据的数量,利用pos进…

linux系统编程:IO读写过程的原子性操作实验

所谓原子性操作指的是:内核保证某系统调用中的所有步骤(操作)作为独立操作而一次性加以执行,其间不会被其他进程或线程所中断。 举个通俗点的例子:你和女朋友OOXX的时候,突然来了个电话,势必会打…