1. 程式人生 > >深度學習中Batch_size相關問題彙總

深度學習中Batch_size相關問題彙總

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)圖片大小,這個好理解

3.如果我們的顯示卡比較渣,就2G,無法提高Batch_size,有什麼辦法挽救一下精度:

    當batch_size無法提高的時候,可以把solver裡面的iter_size調大一些,因為caffe在每個隨機梯度下降步驟中通過iter_size*batch_size實現累加梯度。所以增加iter_size也可以得到更穩定的梯度。