有很多筆者從各種角度解釋這三個名詞,我想從一個自頂向下的角度解釋這三個東西
1、一般而言,一個機器學習訓練過程是對一個被稱作“訓練集”(Train Set)的樣本集進行計算。
就我所見,一個訓練過程在達到一定epoch或者早停條件后停止訓練。這里一個epoch就是對一個訓練集完整訓練一次的過程。
如果是神經網絡算法里,那訓練集中的所有訓練樣本在神經網絡中都進行了一次正向傳播 和一次反向傳播。
2、我們深入到一個epoch的里面,通常會將一個訓練集進行分片,分成若干個batch,所以“batchsize”這個參數就是指一個batch的樣本量。
對每一個batch進行訓練和梯度計算。
3、如果一個batch訓練一輪(通常是一輪即可)就更新一次參數,那一個batch訓練一輪就是一個Iteration
mnist 數據集有張圖片作為訓練數據,
張圖片作為測試數據。假設現在選擇 Batch_Size =
對模型進行訓練。迭代
次。
- 每個 Epoch 要訓練的圖片數量:
(訓練集上的所有圖像)
- 訓練集具有的 Batch 個數:
- 每個 Epoch 需要完成的 Batch 個數:
- 每個 Epoch 具有的 Iteration 個數:
(完成一個Batch訓練,相當於參數迭代一次)
- 每個 Epoch 中發生模型權重更新的次數:
- 訓練 10 個Epoch后,模型權重更新的次數:
- 不同Epoch的訓練,其實用的是同一個訓練集的數據。第1個Epoch和第10個Epoch雖然用的都是訓練集的
圖片,但是對模型的權重更新值卻是完全不同的。因為不同Epoch的模型處於代價函數空間上的不同位置,模型的訓練代越靠后,越接近谷底,其代價越小。
- 總共完成30000次迭代,相當於完成了
個Epoch
(參考:https://www.jianshu.com/p/22c50ded4cf7?from=groupmessage)