caffe深度學習進行迭代的時候loss曲線開始震盪原因


1:訓練的batch_size太小

1.       當數據量足夠大的時候可以適當的減小batch_size,由於數據量太大,內存不夠。但盲目減少會導致無法收斂,batch_size=1時為在線學習。

2.  batch的選擇,首先決定的是下降方向,如果數據集比較小,則完全可以采用全數據集的形式。這樣做的好處有兩點,

    1)全數據集的方向能夠更好的代表樣本總體,確定其極值所在。

   2)由於不同權重的梯度值差別巨大,因此選取一個全局的學習率很困難。

3.  增大batchsize的好處有三點:

    1)內存的利用率提高了,大矩陣乘法的並行化效率提高。

    2)跑完一次epoch(全數據集)所需迭代次數減少,對於相同的數據量的處理速度進一步加快。

    3)一定范圍內,batchsize越大,其確定的下降方向就越准,引起訓練震盪越小。

4.  盲目增大的壞處:

 1)當數據集太大時,內存撐不住。

    2)batchsize增大到一定的程度,其確定的下降方向已經基本不再變化。

 

總結:

        1)batch數太小,而類別又比較多的時候,可能會導致loss函數震盪而不收斂,尤其是在你的網絡比較復雜的時候。

        2)隨着batchsize增大,處理相同的數據量的速度越快。

        3)隨着batchsize增大,達到相同精度所需要的epoch數量越來越多。

        4)由於上述兩種因素的矛盾, Batch_Size 增大到某個時候,達到時間上的最優。

        5)過大的batchsize的結果是網絡很容易收斂到一些不好的局部最優點。同樣太小的batch也存在一些問題,比如訓練速度很慢,訓練不容易收斂等。

        6)具體的batch size的選取和訓練集的樣本數目相關
---------------------
作者:Bruve_y
來源:CSDN
原文:https://blog.csdn.net/yuanlunxi/article/details/79378301
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM