咱們在訓練網絡的時候基本都會設置一個叫Batch_size的參數,這個參數爲啥須要以及設置多少合適?網絡
Batch的選擇,首先決定的是降低的方向。app
若是數據集比較小,可採用全數據集的形式,好處是:ide
對於更大的數據集,假如採用全數據集的形式,壞處是:函數
假如每次只訓練一個樣本,即 Batch_Size = 1。線性神經元在均方偏差代價函數的錯誤面是一個拋物面,橫截面是橢圓。對於多層神經元、非線性網絡,在局部依然近似是拋物面。此時,每次修正方向以各自樣本的梯度方向修正,橫衝直撞各自爲政,難以達到收斂。學習
既然 Batch_Size 爲全數據集或者Batch_Size = 1都有各自缺點,可不能夠選擇一個適中的Batch_Size值呢?spa
此時,可採用批梯度降低法(Mini-batches Learning)。由於若是數據集足夠充分,那麼用一半(甚至少得多)的數據訓練算出來的梯度與用所有數據訓練出來的梯度是幾乎同樣的。.net
參考:
orm
[1] https://blog.csdn.net/qq_34886403/article/details/82558399blog
喜歡就關注一下啦~~~圖片