您的位置:首页 > 其它

Resnet-18-训练实验-warm up操作

2017-09-07 17:45 477 查看
实验数据:cat-dog 二分类,训练集:19871 验证集:3975

实验模型:resnet-18

batchsize:128*2 (一个K80吃128张图片)

存在的问题: 对训练集 accuracy可达0.99 loss=1e-2 -3,然而验证集 accuracy 0.5,loss 很高,试了多个初始学习率(0.1 — 0.0001)都不行

解决上述问题: 采取warm up方法 ,对上述问题有点帮助

训练resnet,由于不finetune,很容易过拟合,paper《Deep Residual Learning for Image Recognition》中对cifar10的实验用了一个trick是 warm up(热身),就是先采用小的学习率(0.01)进行训练,训练了400iterations之后将学习率调整至0.1开始正式训练。

一开始不以为然,我分别用了四个初始学习率 lr=0.1; 0.01; 0.001; 0.0001; 然后每1000个iterations就降低一次lr。然而这四种初始学习率都试过之后,发现,验证集的accuracy怎么都上不去,都是0.5~0.6之间,而训练集的可以到0.99。而resnet采用了batch normalization,在caffe中,batch normalization 就有一个“坑”,就是use_global_stats 的设置问题。training时候是关闭,testing的时候是要打开,deploy也是要打开的。

对于训练集accuracy达0.99,验证集accuracy是0.5+的情况,我以为是batch normalization出问题,于是乎各种捣鼓BN去了,最后试了一下warm up,网络在验证集的loss才有所下降。

来看看warm up 的loss,分别采用 0.01 0.001 0.001 0.0001,gamma=10 ;stepsize在图中已经隔断







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: