深度学习中Batch_size相关问题汇总

来源:互联网 发布:开通淘宝店铺流程 编辑:程序博客网 时间:2024/05/21 22:29

1.Batch_size的使用意义及大小的选择

    Batch_size不宜选的太小,太小了容易不收敛,或者需要经过很大的epoch才能收敛;也没必要选的太大,太大的话首先显存受不了,其次可能会因为迭代次数的减少而造成参数修正变的缓慢。

    http://blog.csdn.net/ycheng_sjtu/article/details/49804041这篇文章很详细的介绍了Batch_size的使用意义和选择原则,并且进行了试验来比较Batch_size对训练结果的影响情况,非常值得一看。


2.Batch_size有时候明明已经很小了,可显存还是很紧张,还有就是同样的图片大小,同样的Batch_size,为啥有时候显存够用有时候就不够用呢,目前我所知道的可能是如下四个问题:

(1)模型的复杂度,复杂的模型占的内存比简单的模型要大很多,这一点容易被忽略;

(2)电脑可能还在运行其他占显存的任务,使用nvida-smi命令来查看,并关闭它们;

(3)不光train阶段的Batch_size要改,test阶段的Batch_size也要调小,我以前一直以为只改动train的就可以了,too naive;

(4)图片大小,这个好理解

    部分参考自Stack Overflow :https://stackoverflow.com/questions/33790366/caffe-check-failed-error-cudasuccess-2-vs-0-out-of-memory


3.如果我们的显卡比较渣,就2G,无法提高Batch_size,有什么办法挽救一下精度:

    当batch_size无法提高的时候,可以把solver里面的iter_size调大一些,因为caffe在每个随机梯度下降步骤中通过iter_size*batch_size实现累加梯度。所以增加iter_size也可以得到更稳定的梯度。

    摘自Stack Overflow : https://stackoverflow.com/questions/36526959/caffe-what-can-i-do-if-only-a-small-batch-fits-into-memory