caffe训练网络不收敛——有哪些坑需要我们去填
caffe训练网络不收敛——有哪些坑需要我们去填
在深度学习领域,caffe已经被广泛使用了,但是对于caffe新手来说,在网络训练过程中总会遇到一些摸不着头脑的问题不知道如何解决,本文总了我在使用caffe过程中的一些经验。
自己定义网络结构——训练
自己定义网络结构在训练过程中一般需要两个文件:solver.prototxt 和 train-val.prototxt. 其中solver文件中存放的是网络参数更新方法,比如SGD(随机梯度下降),caffe中默认使用SGD对网络参数进行训练,除非特别指明别的参数更新方法。在这个文件中比较重要的参数是学习率(base_lr)的设置。base_lr这个参数在自己训练新网络时,可以从0.1开始尝试,如果模型不收敛(loss不下降的意思),那就降低,除以10,用0.01尝试,一般来说0.01会收敛,不行的话就用0.001. 这个学习率也不是固定不变的,在solver文件中还要设置,这个学习率的更新方法,有的是利用step,迭代多少次后更新,更新参数为gamma。
train-val文件,存放网络构架。 这个文件有坑,有的网络使用layer{}实现,有的是layers{},这两者构建出俩的网络结果一样,但是内部参数的名称表示会有不同,一定要注意区分。fine-tune别人的网络构架——训练
利用别人的网络构架,会省事很多。跟自己训练网络的主要不同在于,train-val文件和训练时脚本不同。前几层的卷积网络用来提取general特征,后面几层fc网络用来提取跟特定task有关的特征,因此在fine-tuning的时候,可以设置前面几层卷积层学习率为0. 直接把别人的网络参数copy过来自己用,只需要利用fc学习自己特殊的特征即可。
讲了这么多,还没有讲到坑在哪里。
其实坑就在数据准备过程中。
很多同学会发现,为什么我训练网络的时候loss一直居高不下,或者呈震荡趋势,不收敛。
居高不下:loss维持在80多,不要以为80多是个小数字,如果你傻傻的一直训练,就会白白浪费GPU的寿命。
这种情况一般是因为数据类别有误,caffe支持类别从0开始划分,比如说3类,那么类别应该是0,1,2.如果你的数据给的是1,2,3那么就会出现这个不收敛情况。
震荡不停: 一会到11,一会又0.1,不要以为它总会收敛,其实它很调皮,这种不收敛的情况可能跟你的train-val文件网络构架有误有关,比如你在fine-tuning的过程中,修改了学习率和参数,但是最后一层的类别忘记了修改,原本是10类,但你的数据只要分为3类即可,就会出现此种不收敛情况。
解决以上各种坑的最简单方法就是:细心
——————————————————————————
EMMA
SIAT
2017.03.21
caffe训练网络不收敛——有哪些坑需要我们去填相关推荐
- Caffe训练分类器不收敛,loss居高不下
转载:http://blog.sina.com.cn/s/blog_141f234870102w941.html 我利用Caffe 训练一个基于AlexNet 的三分类分类器,将train_val.p ...
- Windows环境下使用 Caffe在ImageNet上训练网络
在配置好Windows版的Caffe之后,可以使用Windows Caffe训练ImageNet网络,主要有4个步骤: (1)准备图片数据库 (2)将图片数据转换为Caffe可以使用的LMDB或者Le ...
- caffe训练技巧总结
一 数据集的制作 我们经常用到的原始数据是图片文件,如jpg,jpeg,png,tif等格式的,而且有可能图片的大小还不一致,而在caffe中经常使用的数据类型是lmdb或leveldb. 1. 数据 ...
- Caffe实践】如何利用Caffe训练ImageNet分类网络
Caffe实践]如何利用Caffe训练ImageNet分类网络 源文章:https://github.com/BVLC/caffe/tree/master/examples/imagenet 由于要使 ...
- caffe框架训练网络参数详解
建立train_sh脚本文件 #!/sur/bin/env sh set -e /home/yourname/caffe/build/tools/caffe train --solver=/home/ ...
- 单通道灰度图片fine-tune训练网络与caffe批量分类测试
1. 转imdb灰度图数据 一定要加上--gray,否则训练时报如下错误: GLOG_logtostderr=1 $TOOLS/convert_imageset \--resize_height=$R ...
- 批量标准化BN方法简介【避免了梯度消失和梯度爆炸、加速网络的收敛、优化网络结构】
一. 本文的内容包括: 1. Batch Normalization,其论文:https://arxiv.org/pdf/1502.03167.pdf 2. Layer Normalizaiton,其 ...
- win10下使用caffe训练自己的数据,车牌二分类
caffe编译参考:http://blog.csdn.net/cym1990/article/details/72630584 1.数据格式转换 Caffe采用leveldb或者lmdb的数据格式. ...
- 【最强ResNet改进系列】IResNet:涨点不涨计算量,可训练网络超过3000层!
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]本篇文章是[最强ResNet改进系列]的第四篇文章,前面我们已经介绍了Res2Net和 ...
最新文章
- Jquery Ajax调用aspx页面方法
- 生活优越与生活艰苦者之间的思考
- 【转】十分有用的linux shell学习总结
- hive sql插入一行数据_Hive查询某一重复字段记录第一条数据
- ora-01092: oracle 实例终止.强制断开连接,undo表空间故障特殊恢复(二)------ORA-01092: ORACLE 实例终止。强制断开连接...
- 【tool】iptables防火墙
- 虚拟机ping不通主机与外网的解决方法
- paip.论程序断点的类型以及设置总结
- 基于MVC模式的企业公文处理信息系统的设计与实现
- python列表如何求增长率_python如何计算环比增长率
- 智能园区中的身份识别的原理是什么?
- 什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?
- vim滚动屏幕快捷键汇总
- tiny4412 裸机程序 八、重定位到DRAM及LCD实验
- 一行代码就能使用PYTHON开发的小游戏
- get_transform is not allowed to be called from a MonoBehaviour constructor (or instance field initia
- Assembly ADODB注册
- 2020计算机考研扩招,官|东北石油大学计算机学院2020研究生调剂·增额扩招
- 电子计算机的基本结构基于存储程序,01计算机基础知识题(50道)
- leetcode-LCP 35
热门文章
- NAT与NAPT技术详解
- 大数据hive 参数调优
- Vue+OpenLayers学习系列(十一)使用axios加载GeoServer发布的WFS服务
- 将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。
- 《气候经济与人类未来》—读书笔记
- 改变eden区,from,to区的比例
- 信息学奥赛一本通:2070:【例2.13】数字对调
- oracle sysdate加减日期,oracle 日期 加减方法
- 纯代码实现人民币兑换美元
- 关于cqhttp需要扫描但是miui不支持爱加速的解决办法