第2章 2.5 性能評估_第1頁
第2章 2.5 性能評估_第2頁
第2章 2.5 性能評估_第3頁
第2章 2.5 性能評估_第4頁
第2章 2.5 性能評估_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

性能評估性能評估訓(xùn)練網(wǎng)絡(luò)時,需要觀察損失和分類精度等評價指標的變化,即性能評估,以便調(diào)整網(wǎng)絡(luò)參數(shù)以取得更好地效果。在手寫數(shù)字識別的例子中,為了觀察損失和分類精度等評價指標的在訓(xùn)練過程中的變化,性能監(jiān)控指標accuracy(分類精度)作為Keras網(wǎng)絡(luò)的compile函數(shù)的metrics參數(shù)值來輸入。同時,為了保存訓(xùn)練過程中得到的識別效果比較好的網(wǎng)絡(luò),在fit函數(shù)中傳入callbacks回調(diào)函數(shù),使得在每一代訓(xùn)練結(jié)束時會保存驗證集分類精度最好的網(wǎng)絡(luò)的權(quán)重。1回調(diào)檢查目錄性能監(jiān)控2性能監(jiān)控性能監(jiān)控函數(shù)可以作為Keras模型的compile函數(shù)的metrics參數(shù)值來輸入,也可以獨立使用。1.與compile函數(shù)一起使用metricsKeras的compile函數(shù)帶有一個metrics參數(shù),該參數(shù)是度量指標的列表,指標的值將會在網(wǎng)絡(luò)調(diào)用fit函數(shù)期間顯示,并記錄到作為fit函數(shù)返回值的History對象中。2.獨立使用的metrics與損失不同,指標是有狀態(tài)的??梢允褂胾pdate_state()方法更新其狀態(tài),并使用result()方法查詢其度量結(jié)果。3.創(chuàng)建自定義metrics任何具有y_true和y_pred兩個參數(shù)并且返回一個和輸入批大小相同的數(shù)組的函數(shù)都可以作為metrics傳遞給compile函數(shù)。任何度量指標都會自動支持樣本加權(quán)。在訓(xùn)練和評估期間跟蹤的指標值是給定迭代輪次的所有批的每批指標值的平均值,性能監(jiān)控4.預(yù)定義的metricsKeras預(yù)定義了一些常用的metrics。稀疏topk類別精度指標:一個樣本的真實類別標簽是一個整數(shù)分類交叉熵指標:計算公式可見相應(yīng)的損失函數(shù)定義二分精度指標:大于0.5的預(yù)測值當(dāng)成1類別精度指標:一個樣本的類別標簽是一個采用獨熱編碼的向量KL散度指標:計算公式可見相應(yīng)的損失函數(shù)定義泊松指標:計算公式可見相應(yīng)的損失函數(shù)定義精度指標topk類別精度指標,K階分類精度稀疏分類交叉熵指標均方誤差指標平均絕對誤差指標1回調(diào)檢查目錄性能監(jiān)控2回調(diào)檢查回調(diào)是可以在訓(xùn)練的各個階段(例如,在每輪迭代的開始或結(jié)束時,在單個批之前或之后等)執(zhí)行動作的對象。使用回調(diào),可以在每批訓(xùn)練后生成TensorBoard日志以監(jiān)控指標、定期將網(wǎng)絡(luò)保存到磁盤、盡早停止訓(xùn)練、在訓(xùn)練期間查看網(wǎng)絡(luò)的內(nèi)部狀態(tài)和統(tǒng)計信息等。將回調(diào)列表(作為關(guān)鍵字參數(shù)callbacks)傳遞給fit函數(shù),回調(diào)檢查1.ModelCheckpoint類keras.callbacks.ModelCheckpoint(filepath,monitor='val_loss',verbose=0,save_best_only=False,save_weights_only=False,mode='auto',save_freq='epoch',options=None,**kwargs)ModelCheckpoint類以一定的間隔保存模型或權(quán)重(在檢查點文件中),因此可以在稍后加載模型或權(quán)重時繼續(xù)訓(xùn)練。ModelCheckpoint類的語法格式如下。常用參數(shù)及其說明參數(shù)名稱說明filepath接收字符串,表示保存模型文件的路徑,無默認值??梢园母袷竭x項,即epoch和val_loss。例如:如果filepath為weights.{epoch:02d}-{val_loss:.2f}.hdf5,則表示將迭代次數(shù)和驗證損失保存在文件名中參數(shù)名稱說明monitor接收字符串,表示監(jiān)視的是哪個指標的最大保存模型,默認為'val_loss',指驗證集的分類精度。還可以是'val_accuracy'save_best_only接收布爾值,當(dāng)設(shè)置為True時,如果監(jiān)測值有改進,則會保存當(dāng)前的模型,否則在每輪迭代結(jié)束時保存模型。默認為Falsesave_weights_only接收布爾值,表示是僅保存權(quán)重還是保存整個模型。默認為False,表示保存整個模型mode接收字符串,表示根據(jù)監(jiān)視指標的最大化或最小化來決定如何覆蓋當(dāng)前保存文件,可以是'auto''max''min'。默認為'auto'save_freq接收字符串,表示保存的頻率?;卣{(diào)支持在每輪迭代結(jié)束時或在固定數(shù)量的訓(xùn)練輪次之后進行保存。默認為'epoch',表示每代結(jié)束時。如果傳入整數(shù),表示訓(xùn)練的輪次常用參數(shù)及其說明回調(diào)檢查回調(diào)檢查2.TensorBoard類keras.callbacks.TensorBoard(log_dir='logs',histogram_freq=0,write_graph=True,write_images=False,update_freq='epoch',profile_batch=0,embeddings_freq=0,embeddings_metadata=None,**kwargs)解決復(fù)雜的問題時,網(wǎng)絡(luò)往往都是很復(fù)雜的。為了方便調(diào)試參數(shù)以及調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),需要將計算圖可視化,以便讓用戶更好地做出下一步的決策。TensorBoard是一個非常強大的工具,不僅可以可視化神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的各種參數(shù),而且可以更好地調(diào)整網(wǎng)絡(luò)模型、網(wǎng)絡(luò)參數(shù)。不管是TensorFlow、Keras還是PyTorch,TensorBoard都提供了非常好的支持。TensorBoard類的語法格式如下。參數(shù)名稱說明log_dir接收字符串,用于保存被TensorBoard分析的日志文件的文件名。默認為'logs'histogram_freq接收整數(shù),表示對于模型中各個層計算激活值和模型權(quán)重直方圖的頻率。為0時,模型權(quán)重直方圖不會被計算。必須為模型權(quán)重直方圖可視化指定驗證數(shù)據(jù),默認為0write_graph接收布爾值,表示是否在TensorBoard中可視化圖像。如果write_graph被設(shè)置為True,日志文件會變得很大。默認為Truewrite_images接收布爾值,表示是否在TensorBoard中將模型權(quán)重以圖像形式可視化。如果設(shè)置為True,日志文件會變得非常大,而且訓(xùn)練速度很慢。默認為Flase常用參數(shù)及其說明回調(diào)檢查參數(shù)名稱說明update_freq接收'batch'或'epoch'或整數(shù)。當(dāng)使用'batch'時,在每個批訓(xùn)練完之后將損失和評估值寫入TensorBoard中。同樣的情況也可應(yīng)用到'epoch'中。如果使用整數(shù),例如10000,這個回調(diào)會在每10000個樣本之后將損失和評估值寫入TensorBoard中。注意,頻繁地寫入TensorBoard會減緩訓(xùn)練的速度。默認為'epoch'profile_batch接收非負整數(shù)或整數(shù)元組,表示分析的批以采樣計算特征。一對正整數(shù)表示要分析的批范圍。默認情況下,它將分析第二批。profile_batch=0表示禁用分析。默認為0embeddings_freq接收整數(shù),表示被選中的嵌入層的保存頻率。默認為0embeddings_metadata將Embedding層的名稱映射為文件名的字典,該文件用于保存Embedding層的元數(shù)據(jù),如果同一個元數(shù)據(jù)文件要用于所有的Embedding層,可以傳遞一個文件名。默認為None常用參數(shù)及其說明回調(diào)檢查回調(diào)檢查3.EarlyStopping類訓(xùn)練深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的時候,通常希望能獲得最好的泛化性能(GeneralizationPerformance),即可以很好地擬合數(shù)據(jù)。但是所有的標準深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如全連接多層感知器,都很可能出現(xiàn)過擬合的情況,即網(wǎng)絡(luò)在訓(xùn)練集上表現(xiàn)得越來越好,錯誤率越來越低,但是在測試集上的表現(xiàn)卻越發(fā)不好。常用的防止過擬合的方法是對模型加正則項,如L1、L2、Dropout,但深度神經(jīng)網(wǎng)絡(luò)希望通過加深網(wǎng)絡(luò)層次來減少優(yōu)化的參數(shù),同時得到更好的優(yōu)化結(jié)果。通過使用EarlyStopping,可以在模型訓(xùn)練過程中截取并保存結(jié)果最優(yōu)的參數(shù)模型,防止過擬合。迭代次數(shù)增多后,達到一定程度就會產(chǎn)生過擬合。在某些情況下,會出現(xiàn)訓(xùn)練集精度一直在提升,但是測試集的精度在上升后下降。若是在EarlyStopping的位置保存模型,則不必反復(fù)訓(xùn)練模型,也可找到最優(yōu)解。EarlyStopping類的語法格式如下。keras.callbacks.EarlyStopping(monitor="val_loss",min_delta=0,patience=0,verbose=0,mode="auto",baseline=None,restore_best_weights=False,)常用參數(shù)及其說明參數(shù)名稱說明monitor接收字符串,表示監(jiān)控的數(shù)據(jù)接口,取值有"acc""val_acc""loss""val_loss"等。正常情況下如果有驗證集,就用"val_acc"或"val_loss"。默認為"val_loss"min_delta在被監(jiān)測的數(shù)據(jù)中被認為是提升的最小變化,例如,小于min_delta的絕對變化會被認為沒有提升?;卣{(diào)檢查參數(shù)名稱說明patience接收整數(shù),表示能夠容忍準確率在多少輪訓(xùn)練內(nèi)都沒有提高。這個設(shè)置其實是在抖動和真正的準確率下降之間做權(quán)衡。如果patience設(shè)置得大,那么最終得到的準確率要略低于模型可以達到的最高準確率。如果patience設(shè)置得小,那么模型很可能在前期抖動,在全圖搜索的階段就停止了,準確率一般很差。patience的大小和學(xué)習(xí)率直接相關(guān)。在設(shè)定學(xué)習(xí)率的情況下,前期先訓(xùn)練幾次,觀察抖動的輪次,用比其稍大些的值設(shè)置patience。在學(xué)習(xí)率變化的情況下,建議patience要略小于最大的抖動輪次。筆者在引入EarlyStopping之前就已經(jīng)得到可以接受的結(jié)果了,EarlyStopping算是“錦上添花”,所以patience設(shè)得比較高,設(shè)為抖動輪次的最大值。默認為0常用參數(shù)及其說明回調(diào)檢查參數(shù)名稱說明mode接收"auto""min""max"。在"min"模式下,當(dāng)監(jiān)視的數(shù)據(jù)量停止減少時,訓(xùn)練將停止;在"max"模式下,當(dāng)監(jiān)視的數(shù)據(jù)量停止增加時,訓(xùn)練將停止;在"auto"模式下,將根據(jù)監(jiān)視的數(shù)據(jù)量的名稱自動推斷出方向。默認為"auto"baseline接收浮點數(shù),表示監(jiān)視的基線值。如果模型沒有顯示出超過基線值的改善,訓(xùn)練將停止。默認為Nonerestore_best_weights接收布爾值,表示是否從監(jiān)視數(shù)據(jù)量的最佳值輪訓(xùn)練恢復(fù)模型權(quán)重。如果為False,則使用在訓(xùn)練的最后一步獲得的模型權(quán)重。默認為Flase常用參數(shù)及其說明回調(diào)檢查回調(diào)檢查4.Learni

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論