深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题)

来自:https://blog.csdn.net/exec1025/article/details/81432801

https://blog.csdn.net/kl1411/article/details/80720122

 

在训练和测试的时候遇到的问题,

_error_if_any_worker_fails()

RuntimeError: DataLoader worker (pid 25637) is killed by signal: Killed.

 

以及,

RuntimeError: $ Torch: not enough memory: you tried to allocate

经过研究,修改batch_size参数就不报错了。将batch_size改小一点,甚至是1都可以。

(PS:也许是我电脑真的不行,改成1了还是跑不动,准备申请一台好一点的电脑)

 

batch size 参数

批尺寸Batch_Size为每次训练样本个数;

迭代次数=样本总数/批尺寸;

https://www.zhihu.com/question/32673260

在合理范围内,增大 Batch_Size 有何好处?

  • 内存利用率提高了,大矩阵乘法的并行化效率提高
  • 跑完一次epoch(全数据集)所需要的迭代次数减小,对于相同数据量的处理速度进一步加快
  • 在一定范围内,一般来说batch size越大,其确定的下降方向越准,引起的训练震荡越小

盲目增大batch size 有什么坏处

  • 内存利用率提高了,但是内存容量可能撑不住了
  • 跑完一次epoch(全数据集)所需要的迭代次数减少,但是想要达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢
  • batch size 大到一定的程度,其确定的下降方向已经基本不再变化

fine tuning

http://bealin.github.io/2016/10/23/Caffe%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%943Fine-tuning%E5%BE%AE%E8%B0%83%E7%BD%91%E7%BB%9C/

fine tuning 流程

  • 准备数据集(包括训练数据和测试数据)
  • 计算数据集的均值文件,因为某个特定领域的图像均值文件会跟ImageNet上的数据均值不太一样
  • 修改网络最后一层的输出类别数,以及最后一层网络的名称,加大最后一层的参数学习速率
  • 调整solver的配置参数
  • 加载预训练模型的参数,启动训练

fine tuning 参数调整

一般fine tuning的方式,都是把learning rate(solver.prototxt)调低(为原来的十分之一),之后把训练模型的最后一层或者两层的学习速率调大一点————这就相当于,把模型的前面那些层的学习调低,使得参数更新的慢一点以达到微调的目的。但有可能会导致整个收敛速度变慢,因此还需要增加最大迭代次数。

需要调节的参数(solver.prototxt)主要包括:
base_lr:初始学习率,这个是非常重要的一个参数;momentum:一般设置为0.9,如果base_lr特别低的话也可以设置为0.99或0.999等 weight_decay:默认0.005,可以适当调整,类似于正则化项;
lr_policy:学习率变化策略,常见的有fixed(固定), inv,step等,详细的说明见http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe
最后如果loss出现不收敛的情况,可以尝试一下以下几种方法:

  • 调小solver里的初始学习率
  • 数据量小的话,可以只对最后几层的权重进行调整,前面权重保持不变,即把前面的学习率置为0,一定程度上限制了激活的大小,这样就限制了某一过大的误差的影响,这样可以避免迭代方向出现过大的变化。
  • 在GPU可承受的范围内调大batch_size的大小(贾扬清的解释:理论上batch小是不会影响收敛的。小batch主要的问题是在FC层的计算可能会不是很efficient,如果实在无计可施,可以试试 ;网上其他博主的解释:batch比较小 ,导致样本覆盖面过低,产生了非常多的局部极小点,在步长和方向的共同作用下,导致数据产生了震荡,导致了不收敛 )
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值