深度學習-學習筆記--深度學習中的epochs,batch_size,iterations詳解

深度學習框架中涉及很多參數,如果一些基本的參數如果不瞭解,那麼你去看任何一個深度學習框架是都會覺得很困難,下面介紹幾個新手常問的幾個參數。

batch

深度學習的優化算法,說白了就是梯度下降。每次的參數更新有兩種方式。

第一種,遍歷全部數據集算一次損失函數,然後算函數對各個參數的梯度,更新梯度。這種方法每更新一次參數都要把數據集裏的所有樣本都看一遍,計算量開銷大,計算速度慢,不支持在線學習,這稱爲Batch gradient descent,批梯度下降。

另一種,每看一個數據就算一下損失函數,然後求梯度更新參數,這個稱爲隨機梯度下降,stochastic gradient descent。這個方法速度比較快,但是收斂性能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次參數的更新也有可能互相抵消掉,造成目標函數震盪的比較劇烈。

爲了克服兩種方法的缺點,現在一般採用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把數據分爲若干個批,按批來更新參數,這樣,一個批中的一組數據共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因爲批的樣本數與整個數據集相比小了很多,計算量也不是很大。

基本上現在的梯度下降都是基於mini-batch的,所以深度學習框架的函數中經常會出現batch_size,就是指這個。

iterations

iterations(迭代):每一次迭代都是一次權重更新,每一次權重更新需要batch_size個數據進行Forward運算得到損失函數,再BP算法更新參數。1個iteration等於使用batchsize個樣本訓練一次。

epochs

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

舉個例子

訓練集有1000個樣本,batchsize=10,那麼:
訓練完整個樣本集需要:
100次iteration,1次epoch。

具體的計算公式爲:
one epoch = numbers of iterations = N = 訓練樣本的數量/batch_size

注:

在LSTM中我們還會遇到一個seq_length, 其實
batch_size = num_steps * seq_length

轉自:http://blog.csdn.net/u013041398/article/details/72841854

發佈了16 篇原創文章 · 獲贊 56 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章