淺談keras使用中val_acc和acc值不同步的思考
在一個(gè)比較好的數(shù)據(jù)集中,比如在分辨不同文字的任務(wù)中,一下是幾個(gè)樣本
使用VGG19,vol_acc和acc基本是同步保持增長的,比如
40/40 [==============================] - 23s 579ms/step - loss: 1.3896 - acc: 0.95 - val_loss: 1.3876 - val_acc: 0.95 Epoch 13/15 40/40 [==============================] - 23s 579ms/step - loss: 1.3829 - acc: 0.96 - val_loss: 1.3964 - val_acc: 0.96 Epoch 14/15 40/40 [==============================] - 23s 580ms/step - loss: 1.3844 - acc: 0.97 - val_loss: 1.3892 - val_acc: 0.97 Epoch 15/15 40/40 [==============================] - 24s 591ms/step - loss: 1.3833 - acc: 0.98 - val_loss: 1.4145 - val_acc: 0.98
這表明訓(xùn)練集和測(cè)試集同分布,在訓(xùn)練集中學(xué)習(xí)的特征確實(shí)可以應(yīng)用到測(cè)試集中,這是最好的情況。
通過觀察熱力圖也可以看到,最熱的地方集中在特征上。比如在分辨不同的文字。
但很多時(shí)候,自己建立的數(shù)據(jù)集并不完美,或者可能不同類的特征分辨并不明顯,這時(shí)候用cnn強(qiáng)行進(jìn)行分類就會(huì)出現(xiàn)很多奇葩的情況。
考慮一種極端的情況,比如有四個(gè)類,而四個(gè)類都是同樣的簡單圖形
那么在學(xué)習(xí)過程中,會(huì)出現(xiàn)如下特征的acc和vol_acc
40/40 [==============================] - 23s 579ms/step - loss: 1.3896 - acc: 0.2547 - val_loss: 1.3876 - val_acc: 0.2500 Epoch 13/15 40/40 [==============================] - 23s 579ms/step - loss: 1.3829 - acc: 0.2844 - val_loss: 1.3964 - val_acc: 0.2281 Epoch 14/15 40/40 [==============================] - 23s 580ms/step - loss: 1.3844 - acc: 0.2922 - val_loss: 1.3892 - val_acc: 0.2469 Epoch 15/15 40/40 [==============================] - 24s 591ms/step - loss: 1.3833 - acc: 0.2578 - val_loss: 1.4145 - val_acc: 0.2500
從熱力圖上看
可以看到因?yàn)闆]有什么特征,所有熱力圖分布也沒有規(guī)律,可以說網(wǎng)絡(luò)什么都沒學(xué)到。
那么考慮中間的情況,比如很相似的類學(xué)習(xí)會(huì)怎么樣?比如不同年份的硬幣
40/40 [==============================] - 25s 614ms/step - loss: 0.0967 - acc: 0.9891 - val_loss: 0.3692 - val_acc: 0.8313 40/40 [==============================] - 23s 580ms/step - loss: 0.0476 - acc: 0.9953 - val_loss: 0.3994 - val_acc: 0.7906 40/40 [==============================] - 23s 578ms/step - loss: 0.0237 - acc: 0.9984 - val_loss: 0.5067 - val_acc: 0.7344 40/40 [==============================] - 23s 579ms/step - loss: 0.0184 - acc: 1.0000 - val_loss: 0.5192 - val_acc: 0.7531 40/40 [==============================] - 23s 582ms/step - loss: 0.0286 - acc: 0.9953 - val_loss: 0.9653 - val_acc: 0.6344 40/40 [==============================] - 23s 584ms/step - loss: 0.0138 - acc: 1.0000 - val_loss: 0.4780 - val_acc: 0.7688 40/40 [==============================] - 23s 583ms/step - loss: 0.0115 - acc: 0.9984 - val_loss: 0.5485 - val_acc: 0.7438 40/40 [==============================] - 23s 581ms/step - loss: 0.0096 - acc: 1.0000 - val_loss: 0.5658 - val_acc: 0.7406 40/40 [==============================] - 23s 578ms/step - loss: 0.0046 - acc: 1.0000 - val_loss: 0.5070 - val_acc: 0.7562
可以看到,雖然網(wǎng)絡(luò)有一定分辨力,但是學(xué)習(xí)的特征位置并不對(duì),這可能是網(wǎng)絡(luò)的分辨力有限,或者數(shù)據(jù)集過小導(dǎo)致的,具體怎么解決還沒有想清楚??可以看到,可以看到除非完全沒有特征,否則train acc一定能到100%,但是這個(gè)是事沒有意義的,這就是過擬合。
一開始同步增長,是在學(xué)習(xí)特征,后來volacc和acc開始有差異,就是過擬合
這可能是訓(xùn)練集過小導(dǎo)致的,如果圖片中只有年份呢?
acc = 0.85,vol_acc=0.85 acc = 0.90,vol_acc=0.90 acc = 0.92,vol_acc=0.92 acc = 0.94,vol_acc=0.92
可以看到,還是能正確分類的,之所以硬幣不能正確分類,是因?yàn)橛?xùn)練數(shù)據(jù)集過小,其他特征掩蓋了年份的特征,只要增大數(shù)據(jù)量就行了。
另外。還有幾點(diǎn)訓(xùn)練技巧:
1、拓展函數(shù)不要怕極端,極端的拓展函數(shù)有利于學(xué)到目標(biāo)真正的特征。
2、使用灰度圖作為訓(xùn)練集?如果以紋理為主,使用灰度圖,灰度圖能增強(qiáng)網(wǎng)絡(luò)的魯棒性,因?yàn)榭梢詼p少光照的影響,但是會(huì)損失顏色信息,可以用結(jié)果看看到底該使用哪種圖?
3、使用小的分辨率圖片可能錯(cuò)過某些特征,尤其是在小數(shù)據(jù)集的時(shí)候,所以可能的話使用大數(shù)據(jù)集,或者提高分辨率,根據(jù)使用者的目標(biāo)。
以上這篇淺談keras使用中val_acc和acc值不同步的思考就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Flask框架學(xué)習(xí)筆記之表單基礎(chǔ)介紹與表單提交方式
這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之表單基礎(chǔ)介紹與表單提交方式,結(jié)合實(shí)例形式分析了flask框架中表單的基本功能、定義、用法及表單提交的get、post方式使用技巧,需要的朋友可以參考下2019-08-08python with statement 進(jìn)行文件操作指南
在Python中,with關(guān)鍵字是一個(gè)替你管理實(shí)現(xiàn)上下文協(xié)議對(duì)象的好東西。例如:file等。在file的結(jié)束,會(huì)自動(dòng)關(guān)閉該文件句柄。而這正是本文所需要的2014-08-08Python時(shí)間處理模塊time和datetime詳解
本文詳細(xì)介紹了Python中常用的時(shí)間處理模塊time和datetime,time模塊提供多種時(shí)間獲取和轉(zhuǎn)換功能,datetime模塊則在time的基礎(chǔ)上增加了日期和時(shí)間的組合處理,如datetime.now()獲取當(dāng)前日期時(shí)間,兩個(gè)模塊在日常編程中非常有用,尤其是在需要時(shí)間日期計(jì)算和轉(zhuǎn)換的場(chǎng)景下2024-10-10pytorch訓(xùn)練時(shí)的顯存占用遞增的問題解決
本文主要介紹了pytorch訓(xùn)練時(shí)的顯存占用遞增的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Python學(xué)習(xí)筆記之os模塊使用總結(jié)
這篇文章主要介紹了Python學(xué)習(xí)筆記之os模塊使用總結(jié),本文總結(jié)了多個(gè)常用方法,需要的朋友可以參考下2014-11-11Python調(diào)用Jar包的兩種方式小結(jié)
這篇文章主要介紹了Python調(diào)用Jar包的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12