1. 程式人生 > >卷積神經網路訓練三個概念(epoch,迭代次數,batchsize)

卷積神經網路訓練三個概念(epoch,迭代次數,batchsize)

總結下訓練神經網路中最最基礎的三個概念:Epoch, Batch, Iteration。

1. 名詞解釋

epoch:訓練時,所有訓練資料集都訓練過一次。

batch_size:在訓練集中選擇一組樣本用來更新權值。1個batch包含的樣本的數目,通常設為2的n次冪,常用的包括64,128,256。 網路較小時選用256,較大時選用64。

iteration​:訓練時,1個batch訓練影象通過網路訓練一次​(一次前向傳播+一次後向傳播),每迭代一次權重更新一次;測試時,1個batch測試影象通過網路一次​(一次前向傳播)。所謂iterations就是完成一次epoch所需的batch個數

2. 換算關係

\mathbf{Number ~ of ~ Batches = \frac{Training ~ Set ~ Size}{Batch ~ Size}}

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

*注:上表中 Mini-Batch 的 Batch 個數為 N / B + 1 是針對未整除的情況。整除則是 N / B。

3. 示例

CIFAR10 資料集有 50000 張訓練圖片,10000 張測試圖片。現在選擇 Batch Size = 256 對模型進行訓練。

  • 每個 Epoch 要訓練的圖片數量:50000
  • 訓練集具有的 Batch 個數:50000 / 256 = 195 + 1 = 196
  • 每個 Epoch 需要完成的 Batch 個數:196
  • 每個 Epoch 具有的 Iteration 個數:196
  • 每個 Epoch 中發生模型權重更新的次數:
    196
  • 訓練 10 代後,模型權重更新的次數:196 * 10 = 1960
  • 不同代的訓練,其實用的是同一個訓練集的資料。第 1 代和第 10 代雖然用的都是訓練集的五萬張圖片,但是對模型的權重更新值卻是完全不同的。因為不同代的模型處於代價函式空間上的不同位置,模型的訓練代越靠後,越接近谷底,其代價越小。