深度學習中的 epochs、batch_size、iterations 詳解
深度學習中涉及到很多引數,如果對於一些引數不瞭解,那麼去看任何一個框架都會有難度,在TensorFlow中有一些模型訓練的基本引數,這些引數是訓練模型的前提,也在一定程度上影響著模型的最終效果。下面主要介紹幾個引數。
-
batch_size
-
iterations
-
epochs
batch_size
深度學習的優化演算法,其實就是梯度下降,在之前的文章中我們也介紹過梯度下降,這裡就不詳細說明。梯度下降分為三種:
-
批量梯度下降演算法(BGD,Batch gradient descent algorithm)
-
隨機梯度下降演算法(SGD,Stochastic gradient descent algorithm)
-
小批量梯度下降演算法(MBGD,Mini-batch gradient descent algorithm)
批量梯度下降演算法,每一次計算都需要遍歷全部資料集,更新梯度,計算開銷大,花費時間長,不支援線上學習。
隨機梯度下降演算法,每次隨機選取一條資料,求梯度更新引數,這種方法計算速度快,但是收斂效能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次引數的更新也有可能互相抵消掉,造成目標函式震盪的比較劇烈。
為了克服兩種方法的缺點,現在一般採用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把資料分為若干個批,按批來更新引數,這樣,一個批中的一組資料共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因為批的樣本數與整個資料集相比小了很多,計算量也不是很大。
tf框架中的batch size指的就是更新梯度中使用的樣本數。當然這裡如果把batch size設定為資料集的長度,就成了批量梯度下降演算法,batch_size設定為1就是隨機梯度下降演算法。
iterations
迭代次數,每次迭代更新一次網路結構的引數。
迭代是重複反饋的動作,神經網路中我們希望通過迭代進行多次的訓練以到達所需的目標或結果。
每一次迭代得到的結果都會被作為下一次迭代的初始值。
一個迭代 = 一個(batch size)資料正向通過(forward)+ 一個(batch size)資料反向(backward)
前向傳播:構建由(x1,x2,x3)得到Y(hwb(x))的表示式
反向傳播:基於給定的損失函式,求解引數的過程
epochs
epochs被定義為前向和反向傳播中所有批次的單次訓練迭代。這意味著1個週期是整個輸入資料的單次前向和反向傳遞。
簡單說,epochs指的就是訓練過程中資料將被“輪”多少次
例如在某次模型訓練過程中,總的樣本數是10000,batch_size=100,epochs=10,其對應的虛擬碼如下:
其中iterations = data length / batch size
熱
相關文章

掃碼關注
By:Thinkgamer
推薦系統 / 深度學習 / 大資料