keras中epoch,batch,loss,val_loss用法說明
1、epoch
Keras官方文檔中給出的解釋是:“簡單說,epochs指的就是訓(xùn)練過程接中數(shù)據(jù)將被“輪”多少次”
(1)釋義:
訓(xùn)練過程中當一個完整的數(shù)據(jù)集通過了神經(jīng)網(wǎng)絡(luò)一次并且返回了一次,這個過程稱為一個epoch,網(wǎng)絡(luò)會在每個epoch結(jié)束時報告關(guān)于模型學(xué)習進度的調(diào)試信息。
(2)為什么要訓(xùn)練多個epoch,即數(shù)據(jù)要被“輪”多次
在神經(jīng)網(wǎng)絡(luò)中傳遞完整的數(shù)據(jù)集一次是不夠的,對于有限的數(shù)據(jù)集(是在批梯度下降情況下),使用一個迭代過程,更新權(quán)重一次或者說使用一個epoch是不夠的,需要將完整的數(shù)據(jù)集在同樣的神經(jīng)網(wǎng)絡(luò)中傳遞多次,隨著epoch次數(shù)增加,神經(jīng)網(wǎng)絡(luò)中的權(quán)重的更新次數(shù)也增加,模型從欠擬合變得過擬合。
2、batch
(1)keras官方文檔中給出的解釋:
深度學(xué)習的優(yōu)化算法,說白了就是梯度下降。每次的參數(shù)更新有兩種方式:
第一種,遍歷全部數(shù)據(jù)集算一次損失函數(shù),然后算函數(shù)對各個參數(shù)的梯度,更新梯度。這種方法每更新一次參數(shù)都要把數(shù)據(jù)集里的所有樣本都看一遍,計算量開銷大,計算速度慢,不支持在線學(xué)習,這種稱為Batch gradient descent,批梯度下降
另一種,每看一個數(shù)據(jù)就算一下?lián)p失函數(shù),然后求梯度更新參數(shù),這個稱為隨機梯度下降,stochastic gradient descent.這個方法速度比較快,但是收斂性能不太好,可能在最優(yōu)點附近晃來晃去,hit不到最優(yōu)點,兩次參數(shù)的更新也有可能互相抵消掉,造成目標函數(shù)震蕩的比較劇烈。
為了克服兩種方法的缺點,現(xiàn)在一般采用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把數(shù)據(jù)分為若干個批,按批來更新參數(shù),這樣,一個批中的一組數(shù)據(jù)共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因為批的樣本數(shù)與整個數(shù)據(jù)集相比小了很多,計算量也不是很大。
(2)batch_size:
Keras中參數(shù)更新是按批進行的,就是小批梯度下降算法,把數(shù)據(jù)分為若干組,稱為batch,按批更新參數(shù),這樣,一個批中的一組數(shù)據(jù)共同決定了本次梯度的方向,一批數(shù)據(jù)中包含的樣本數(shù)量稱為batch_size。
3、iteration
將數(shù)據(jù)分為幾個batch而不是一次性通過神經(jīng)網(wǎng)絡(luò)時,iteration是batch需要完成一個epoch的次數(shù),也就是number of batches (區(qū)別于 batch size) , 在一次epoch中 number of batches = iteration = 訓(xùn)練樣本總數(shù) / batch size
比如,對于一個有2000個訓(xùn)練樣本的數(shù)據(jù)集,將2000個樣本分成大小為500的batch,那么完成一個epoch需要4個iteration
4、batch size 和 epoch 的選取
(1)訓(xùn)練網(wǎng)絡(luò)過程中,一個batch中的樣本規(guī)模大小,即batch size 和epoch個數(shù)一起通過影響更新權(quán)重的頻率定義了網(wǎng)絡(luò)學(xué)習數(shù)據(jù)的速度。
對于固定的epoch:
(a)在合理范圍內(nèi),隨著batch size增大,跑完一次epoch所需的迭代數(shù)減少,對于相同數(shù)據(jù)量的處理速度進一步加快,確定的下降方向越準,引起的訓(xùn)練震蕩越小。
(b)batch size 過大時,跑完一次epoch所需的迭代數(shù)減少,想要達到相同的精度,所花費的時間大大增加了,從而對參數(shù)的修正也變得緩慢,batch size增大到一定程度,其確定的下降方向已經(jīng)基本不再變化
對于固定的batch size:
(a)在合理范圍內(nèi)隨著epoch的增加,訓(xùn)練集和測試集的誤差呈下降趨勢,模型的訓(xùn)練有了效果
(b)隨著epoch的繼續(xù)增加,訓(xùn)練集的誤差呈下降而測試集的誤差呈上升趨勢,模型過擬合訓(xùn)練集對測試集性能不好
(2)實驗實驗,通過實驗+經(jīng)驗選取合適的batch size 和 epoch
訓(xùn)練截圖:
網(wǎng)絡(luò)的權(quán)重參數(shù)W在每一個batch size都會進行一次更新,界面顯示的loss值是 iteration次batch size訓(xùn)練后loss值的加權(quán)求和值。val_loss是跑完一次Epoch后,跑完一次驗證集計算的值。
---------訓(xùn)練總結(jié)------------
train loss 不斷下降,test loss不斷下降,說明網(wǎng)絡(luò)仍在學(xué)習;(最好的)
train loss 不斷下降,test loss趨于不變,說明網(wǎng)絡(luò)過擬合;(max pool或者正則化)
train loss 趨于不變,test loss不斷下降,說明數(shù)據(jù)集100%有問題;(檢查dataset)
train loss 趨于不變,test loss趨于不變,說明學(xué)習遇到瓶頸,需要減小學(xué)習率或批量數(shù)目;(減少學(xué)習率)
train loss 不斷上升,test loss不斷上升,說明網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計不當,訓(xùn)練超參數(shù)設(shè)置不當,數(shù)據(jù)集經(jīng)過清洗等問題。(最不好的情況)
以上這篇keras中epoch,batch,loss,val_loss用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于sklearn包導(dǎo)入錯誤:ImportError:?cannot?import?name Type解
這篇文章主要介紹了關(guān)于sklearn包導(dǎo)入錯誤:ImportError:?cannot?import?name‘Type‘解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02pandas 數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)
這篇文章主要介紹了pandas 數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-12-12win7 下搭建sublime的python開發(fā)環(huán)境的配置方法
Sublime Text具有漂亮的用戶界面和強大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定,菜單和工具欄。Sublime Text的主要功能包括:拼寫檢查,書簽,完整的 Python API,Goto功能,即時項目切換,多選擇,多窗口等等。2014-06-06python實現(xiàn)將excel文件轉(zhuǎn)化成CSV格式
下面小編就為大家分享一篇python實現(xiàn)將excel文件轉(zhuǎn)化成CSV格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03