深度學習中 number of training epochs 中的 epoch到底指什麼?

最近正在使用 mxnet培訓cnn模型,mxnet中 mxnet.model.Feedforward類中有一個 num_epoch 。。。在好多地方也看到了 epoch 譬如 the number of training epochs 。。。但是一直沒有明白epoch到底指的是什麼,感覺好像是迭代的次數?有明白的講解一下,謝謝大家


一個epoch是指把所有訓練數據完整的過一遍


訓練的時候一般採用stochastic gradient descent(SGD),一次迭代選取一個batch進行update。一個epoch的意思就是迭代次數*batch的數目 和訓練數據的個數一樣,就是一個epoch。


e(一)poch(波)的意思


一次epoch=所有訓練數據forward+backward後更新參數的過程。

一次iteration=[batch size]個訓練數據forward+backward後更新參數過程。

另:一般是iteration譯成「迭代」


對於初學者來講,有幾個概念容易混淆:

(1)iteration:表示1次迭代,每次迭代更新1次網路結構的參數;

(2)batch_size:1次迭代所使用的樣本量;

(3)epoch:1個epoch表示過了1遍訓練集中的所有樣本。

需要補充的是,在深度學習領域中,常用隨機梯度下降演算法(Stochastic Gradient Descent, SGD)訓練深層結構,它有一個好處就是並不需要遍歷全部的樣本,當數據量非常大時十分有效。此時,可根據實際問題來定義epoch,例如定義10000次迭代為1個epoch,若每次迭代的batch_size設為256,那麼1個epoch相當於過了2560000個訓練樣本。


num_epoch:指的是的訓練數據過幾遍。訓練數據從頭到尾過一遍為一個epoch。

和epoch相關的概念還有step_num, batch_size。

step_num:指的是訓練的次數

batch_size:指的是每一次迭代的訓練,使用數據的個數。


一次epoch中 每次迭代選取的batch size 樣本都不會重複吧


epoch:中文翻譯為時期。

一個時期 = 所有訓練樣本的一個正向傳遞和一個反向傳遞。


epochs

epochs被定義為向前和向後傳播中所有批次的單次訓練迭代。這意味著1個周期是整個輸入數據的單次向前和向後傳遞。簡單說,epochs指的就是訓練過程中數據將被「輪」多少次,就這樣。

舉個例子

訓練集有1000個樣本,batchsize=10,那麼:

訓練完整個樣本集需要:

100次iteration,1次epoch。

具體的計算公式為:

one epoch = numbers of iterations = N = 訓練樣本的數量/batch_size


推薦閱讀:

TAG:機器學習 | 深度學習DeepLearning | 卷積神經網路CNN | mxnet |