深度學習中 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 |