寫在前面:
從別處復制過來,感覺寫的清晰明了,當作復習材料,原作者鏈接在文末。
在訓練神經網絡的時候,我們難免會看到Batch、Epoch和Iteration這幾個概念。曾對這幾個概念感到模糊,看了網上的一些文章后,在這里做幾個小小的總結。
👉如有錯誤之處,還望指出。
名詞解釋:

【 圖片來源:https://zhuanlan.zhihu.com/p/29409502 】
- Epoch(時期):
當一個完整的數據集通過了神經網絡一次並且返回了一次,這個過程稱為一次>epoch。(也就是說,所有訓練樣本在神經網絡中都* 進行了一次正向傳播* 和一次反向傳播* )
再通俗一點,一個Epoch就是將所有訓練樣本訓練一次*的過程。然而,當一個Epoch的樣本(也就是所有的訓練樣本)數量可能太過龐大(對於計算機而言),就需要把它分成多個小塊,也就是就是分成*多個Batch 來進行訓練。*
- Batch(批 / 一批樣本):
將整個訓練樣本分成若干個Batch。- Batch_Size(批大小):
每批樣本的大小。- Iteration(一次迭代):
訓練一個Batch就是一次Iteration(這個概念跟程序語言中的迭代器相似)。
- 為什么要使用多於一個epoch?
在神經網絡中傳遞完整的數據集一次是不夠的,而且我們需要將完整的數據集在同樣的神經網絡中傳遞多次。但請記住,我們使用的是有限的數據集,並且我們使用一個迭代過程即梯度下降來優化學習過程。如下圖所示。因此僅僅更新一次或者說使用一個epoch是不夠的。
隨着epoch數量增加,神經網絡中的權重的更新次數也在增加,曲線從欠擬合變得過擬合。
那么,問題來了,幾個epoch才是合適的呢?
不幸的是,這個問題並沒有正確的答案。對於不同的數據集,答案是不一樣的。但是數據的多樣性會影響合適的epoch的數量。比如,只有黑色的貓的數據集,以及有各種顏色的貓的數據集。
【 來源:https://blog.csdn.net/qq_39521554/article/details/84480429 】
換算關系:

實際上,梯度下降的幾種方式的根本區別就在於上面公式中的 Batch_Size 不同。

【 圖片來源:https://zhuanlan.zhihu.com/p/29409502 】
舉個例子:
mnist 數據集有
張圖片作為訓練數據,
張圖片作為測試數據。假設現在選擇 Batch_Size =
對模型進行訓練。迭代
次。
- 每個 Epoch 要訓練的圖片數量:
(訓練集上的所有圖像)
- 訓練集具有的 Batch 個數:
- 每個 Epoch 需要完成的 Batch 個數:
- 每個 Epoch 具有的 Iteration 個數:
(完成一個Batch訓練,相當於參數迭代一次)
- 每個 Epoch 中發生模型權重更新的次數:
- 訓練 10 個Epoch后,模型權重更新的次數:
- 不同Epoch的訓練,其實用的是同一個訓練集的數據。第1個Epoch和第10個Epoch雖然用的都是訓練集的
圖片,但是對模型的權重更新值卻是完全不同的。因為不同Epoch的模型處於代價函數空間上的不同位置,模型的訓練代越靠后,越接近谷底,其代價越小。
- 總共完成30000次迭代,相當於完成了
個Epoch
【 來源:https://blog.csdn.net/xiaohuihui1994/article/details/80624593 】
寫在最后:
參考資料:
- 知乎:訓練神經網絡中最基本的三個概念:Epoch, Batch, Iteration
- 博客:深度學習中為什么要使用多於一個epoch?
- 博客:神經網絡中Epoch、Iteration、Batchsize相關理解和說明
- 博客:深度學習(深度神經網絡)中最基本的三個概念:Epoch, Batch, Iteration
路遠且艱,你我共勉。
作者:0與1的邂逅
鏈接:https://www.jianshu.com/p/22c50ded4cf7
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


張圖片作為訓練數據,
張圖片作為測試數據。假設現在選擇 Batch_Size =
對模型進行訓練。迭代
次。


個Epoch