天天看點

神經網絡中epoch、batch、batchsize

1 epoch

  • 當資料集中的全部資料樣本通過神經網絡一次并且傳回一次的過程即完成一次訓練稱為一個epoch。
  • 當我們分批學習時,每次使用過全部訓練資料完成一次Forword運算以及一次BP運算,稱為完成了一次epoch。
  • epoch時期 = 所有訓練樣本的一個正向傳遞和一個反向傳遞。

為什麼要設定多個epoch?

  • 因為在神經網絡中傳遞完整的資料集一次是不夠的,而且我們需要将完整的資料集在同樣的神經網絡中傳遞多次。我們使用的是有限的資料集,并且我們使用一個疊代過程即梯度下降,優化學習過程和圖示。是以隻更新權重一次或說使用一個 epoch 是不夠的。

2 batch

在不能将資料一次性通過神經網絡的适合,就需要将資料集分成幾個batch。

Iteration:1次iteration即疊代1次,也就是用batch_size個樣本訓練一次。

一個疊代=一個正向通過+一個反向通過。

每一次疊代得到的結果都會被作為下一次疊代的初始值.

3 batchsize

每批資料量的大小,批量大小将決定我們一次訓練的樣本數目。

batch_size将影響到模型的優化程度和速度。

用優化算法進行訓練,也就是1 次iteration一起訓練batch_size個樣本,計算它們的平均損失函數值,來更新一次參數。

為什麼需要有batchsize?

batchsize的正确選擇是為了在記憶體效率和記憶體容量之間尋找最佳平衡。

4 差別

深度學習中經常看到epoch、iteration和batchsize,下面說說這三個差別:

(1)batchsize:批大小。在深度學習中,一般采用SGD訓練,即每次訓練在訓練集中取batchsize個樣本訓練;

(2)iteration:1個iteration等于使用batchsize個樣本訓練一次;

(3)epoch:1個epoch等于使用訓練集中的全部樣本訓練一次;

示例

一個excel中包括200個樣本(資料行)的資料,選擇batch_size=5, epoch=1000, 則batch=40個,每個batch有5個樣本,一次epoch将進行40個batch或40次模型參數更新,1000個epoch,模型将傳遞整個資料集1000次,在整個訓練過程中,總共有40000次batch.

mnist 資料集有 10000 張訓練資料,10000 張測試資料。現在選擇 Batch_Size = 100 對模型進行訓練。

每個 epoch 要訓練的圖檔數量:10000(訓練集上的所有圖像)

訓練集具有的 batch 個數: 10000/100=100

每個 epoch 需要完成的 batch 個數: 100

每個 epoch 具有的 Iteration 個數: 100(完成一個batch,相當于參數疊代一次)

每個 epoch 中發生模型權重更新的次數:100

訓練 10 個epoch後,模型權重更新的次數: 100*10=1000

不同epoch的訓練,其實用的是同一個訓練集的資料。第1個epoch和第10個epoch雖然用的都是訓練集的10000圖檔,但是對模型的權重更新值卻是完全不同的。因為不同epoch的模型處于代價函數空間上的不同位置,模型的訓練代越靠後,越接近谷底,其代價越小。

總共完成10000次疊代,相當于完成了 10000/100=100 個epoch

batch_size的選擇原則:batch_size越大,batch越少,需要疊代的次數越少,訓練時間越短。

batch_size越小,batch數量越多,耗時久,計算機占用記憶體大。

繼續閱讀