最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

keras做CNN的訓(xùn)練誤差loss的下降操作

 更新時(shí)間:2020年06月22日 15:00:50   作者:fitzgerald0  
這篇文章主要介紹了keras做CNN的訓(xùn)練誤差loss的下降操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

采用二值判斷如果確認(rèn)是噪聲,用該點(diǎn)上面一個(gè)灰度進(jìn)行替換。

噪聲點(diǎn)處理:對(duì)原點(diǎn)周圍的八個(gè)點(diǎn)進(jìn)行掃描,比較。當(dāng)該點(diǎn)像素值與周圍8個(gè)點(diǎn)的值小于N時(shí),此點(diǎn)為噪點(diǎn) 。

處理后的文件大小只有原文件小的三分之一,前后的圖片內(nèi)容肉眼幾乎無(wú)法察覺(jué)。

但是這樣處理后圖片放入CNN中在其他條件不變的情況下,模型loss無(wú)法下降,二分類圖片,loss一直在8-9之間。準(zhǔn)確率維持在0.5,同時(shí),測(cè)試集的訓(xùn)練誤差持續(xù)下降,但是準(zhǔn)確率也在0.5徘徊。大概真是需要誤差,讓優(yōu)化方法從局部最優(yōu)跳出來(lái)。

使用的activation function是relu,full connection layer是softmax分類函數(shù),優(yōu)化方法為RMsprop

難到是需要加入噪音更好,CNN中加入高斯噪音不是讓模型更穩(wěn)健的嗎?還有讓模型跳出局部最優(yōu)的好處,方便訓(xùn)練。

原意:降噪的目的是因?yàn)檫@批數(shù)據(jù)是樣本較少,用復(fù)印機(jī) 掃面出來(lái)的圖片,想著放入更干凈的數(shù)據(jù),模型更容易學(xué)習(xí)到本質(zhì)特征。

結(jié)果事與愿違,但是在keras中是可以加入noise的,比如加入高斯噪音

form keras.layers.noise import GaussianNoise

我在全連接層中加入

model.add(GaussianNoise(0.125))

后來(lái)查看了BatchNormalization的作用,發(fā)現(xiàn)在這個(gè)大殺器之后,好像很少有人用到初始化和其他的tricks,就可以讓模型表現(xiàn)的很好。

在第一層的Maxpooling后面加上,model.add(BatchNormalization()),效果非常顯著,第一次epoch的loss值只有0.63,acc也迅速上升,不會(huì)出現(xiàn)之前的卡在8.354一直不動(dòng),哪怕更換 leraning rate和使用Adagrad,都是一樣的,如果前面的5個(gè)epoch完,還是沒(méi)有太大的變化,后面幾乎不會(huì)收斂。

1,leraning rate的設(shè)置

#導(dǎo)入模塊,以rmsprop為例
from keras.optimizers import rmsprop
rmsprop=rmsprop(lr=0.1)#只是更改了學(xué)習(xí)率,其他的參數(shù)沒(méi)有更改,默認(rèn)學(xué)習(xí)率是0.001

2.BatchNormalization()的設(shè)置

from keras.layers.normalization import BatchNormalization

#網(wǎng)上不少人說(shuō),批規(guī)范化 加在輸入層的激活函數(shù)(層)的前面

model.add(BatchNormalization())

也有看到每一個(gè)隱藏層的激活函數(shù)前面全部加上BN的,但是我這個(gè)實(shí)驗(yàn)中,效果很差。

3.在輸入數(shù)據(jù)的時(shí)候,依然加上train_x = data/255.0,對(duì)像素矩陣的取值放小到0-1之間,否則訓(xùn)練將很艱難。

其實(shí)在我自己的實(shí)驗(yàn)中,后來(lái)調(diào)整成:

train_x-= np.mean(train_x, axis = 0)

發(fā)現(xiàn)效果更好

4.如果第一次的epoch的loss在個(gè)位數(shù),則很可能需要返回去重新構(gòu)建模型,加入更多的trick,如果最后的loss值依然沒(méi)有達(dá)到小數(shù),則也可能是難于訓(xùn)練,也需要加入其他的技巧?;蛘吣P痛罱ǖ挠袉?wèn)題,需要慎重檢查。

5. 建議使用網(wǎng)格搜索,從最重要的參數(shù)開始,搭建一個(gè)簡(jiǎn)單的模型,然后取合理的超參數(shù),逐一進(jìn)行。

6 .也可以在卷積層中加正則化,比如:

C1 = Convolution2D(8 3, 3, border_mode='valid', init='he_uniform', activation='relu',W_regularizer=l2(regularizer_params))

7.有看到在kaggle中使用集成cnn的,分類錯(cuò)誤率確實(shí)有下降。

8 使用ReduceLROnPlateau 對(duì)學(xué)習(xí)率進(jìn)行衰減,當(dāng)下降很慢時(shí),學(xué)習(xí)率自動(dòng)調(diào)整,可以起到一部分作用,

我在模型中使用的是RMSprop ,RMSprop本身帶有學(xué)習(xí)率的自動(dòng)調(diào)整,但是,我加上ReduceLROnPlateau ,依然可以看到學(xué)習(xí)率變化很慢時(shí),設(shè)置的這個(gè)ReduceLROnPlateau 有調(diào)整。

9 用數(shù)據(jù)增強(qiáng)的時(shí)候,也需要小心,圖片調(diào)整的幅度等均會(huì)對(duì)模型的正確率有影響。

10,對(duì)3個(gè)顏色的圖像轉(zhuǎn)換為gray以后,分類準(zhǔn)確率穩(wěn)定在 0.5左右,幾乎就是廢掉了,說(shuō)明圖像的像素對(duì)于模型的影響巨大,后來(lái)了解到有“圖像超分辨率重建Super-Resolution”其實(shí)是可以對(duì)圖像做像素的分辨率更高。當(dāng)然也是可以手工用PS進(jìn)行插值等修圖。查了下,像mnist這樣的數(shù)據(jù)集都是經(jīng)過(guò)處理后才放入模型中的,所以,不能完全指望著CNN卷積池化就把所有的問(wèn)題都解決掉,盡管圖像分類和識(shí)別正在像CNN轉(zhuǎn)移。

keras遇到的坑(可能是水平的問(wèn)題,總之有困惑)

(1) 多次運(yùn)行會(huì)在上一次運(yùn)行過(guò)的數(shù)據(jù)上起作用,比如,

train_x , val_x , train_y, val_y = train_test_split(train_x, train_y, test_size=0.1, random_state=random_seed)

如果多次運(yùn)行,則1000個(gè)數(shù)據(jù),900個(gè)訓(xùn)練集的,下一次變成,900*0.9=810個(gè)數(shù)據(jù),同時(shí),還發(fā)現(xiàn),

train_y = to_categorical(label, num_classes =2),這里也可能出現(xiàn)問(wèn)題,比如,二分類,在第一次運(yùn)行后是,2行

第二次運(yùn)行就變成4行

(2) 在做交叉驗(yàn)證時(shí)

新版本epoch的寫法是epochs=

estimator = KerasClassifier(build_fn=baseline_model, epochs=20, batch_size=32, verbose=2)

如果用成下面老版本,則n_epoch無(wú)法讀取,運(yùn)行的時(shí)候,默認(rèn)的是1所以我定義的 n_epoch=20是失效。

estimator = KerasClassifier(build_fn=baseline_model, n_epoch=20, batch_size=32, verbose=2)

補(bǔ)充知識(shí):keras中l(wèi)oss與val_loss的關(guān)系

loss是訓(xùn)練集的損失值,val_loss是測(cè)試集的損失值

以下是loss與val_loss的變化反映出訓(xùn)練走向的規(guī)律總結(jié):

train loss 不斷下降,test loss不斷下降,說(shuō)明網(wǎng)絡(luò)仍在學(xué)習(xí);(最好的)

train loss 不斷下降,test loss趨于不變,說(shuō)明網(wǎng)絡(luò)過(guò)擬合;(max pool或者正則化)

train loss 趨于不變,test loss不斷下降,說(shuō)明數(shù)據(jù)集100%有問(wèn)題;(檢查dataset)

train loss 趨于不變,test loss趨于不變,說(shuō)明學(xué)習(xí)遇到瓶頸,需要減小學(xué)習(xí)率或批量數(shù)目;(減少學(xué)習(xí)率)

train loss 不斷上升,test loss不斷上升,說(shuō)明網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)不當(dāng),訓(xùn)練超參數(shù)設(shè)置不當(dāng),數(shù)據(jù)集經(jīng)過(guò)清洗等問(wèn)題。(最不好的情況)

以上這篇keras做CNN的訓(xùn)練誤差loss的下降操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中matplotlib調(diào)整圖例位置的方法實(shí)例

    python中matplotlib調(diào)整圖例位置的方法實(shí)例

    在matplotlib中,一般圖例默認(rèn)是在圖表內(nèi)部的,如果要放置到圖例外面,需要對(duì)坐標(biāo)進(jìn)行指定,下面這篇文章主要給大家介紹了關(guān)于python中matplotlib調(diào)整圖例位置的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • python石頭剪刀布小游戲(三局兩勝制)

    python石頭剪刀布小游戲(三局兩勝制)

    這篇文章主要為大家詳細(xì)介紹了python石頭剪刀布小游,三局兩勝制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python正則表達(dá)式以及常用匹配實(shí)例

    Python正則表達(dá)式以及常用匹配實(shí)例

    在處理字符串時(shí),經(jīng)常會(huì)遇到查找符合某些復(fù)雜規(guī)則字符串的需求,正則表達(dá)式就是用于描述這些規(guī)則的工具,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式以及常用匹配的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python pandas對(duì)excel的操作實(shí)現(xiàn)示例

    Python pandas對(duì)excel的操作實(shí)現(xiàn)示例

    這篇文章主要介紹了Python pandas對(duì)excel的操作實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python3幾個(gè)常見(jiàn)問(wèn)題的處理方法

    Python3幾個(gè)常見(jiàn)問(wèn)題的處理方法

    今天小編就為大家分享一篇關(guān)于Python3幾個(gè)常見(jiàn)問(wèn)題的處理方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 使用Python PIL庫(kù)讀取文件批量處理圖片大小實(shí)現(xiàn)

    使用Python PIL庫(kù)讀取文件批量處理圖片大小實(shí)現(xiàn)

    這篇文章主要為大家介紹了使用Python PIL庫(kù)讀取文件批量處理圖片大小實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 在Python的循環(huán)體中使用else語(yǔ)句的方法

    在Python的循環(huán)體中使用else語(yǔ)句的方法

    這篇文章主要介紹了在Python的循環(huán)體中使用else語(yǔ)句的方法,else語(yǔ)句的使用在各種語(yǔ)言的學(xué)習(xí)當(dāng)中均為基本功、本文中主要介紹其在for循環(huán)中的應(yīng)用,需要的朋友可以參考下
    2015-03-03
  • 使用pycharm在本地開發(fā)并實(shí)時(shí)同步到服務(wù)器

    使用pycharm在本地開發(fā)并實(shí)時(shí)同步到服務(wù)器

    這篇文章主要介紹了使用pycharm在本地開發(fā)并實(shí)時(shí)同步到服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別

    基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別

    這篇文章主要為大家詳細(xì)介紹了基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • TensorFlow實(shí)現(xiàn)非線性支持向量機(jī)的實(shí)現(xiàn)方法

    TensorFlow實(shí)現(xiàn)非線性支持向量機(jī)的實(shí)現(xiàn)方法

    本篇文章主要介紹了TensorFlow實(shí)現(xiàn)非線性支持向量機(jī)的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論

拜城县| 临汾市| 张家港市| 靖远县| 金昌市| 衡南县| 浦江县| 安庆市| 正蓝旗| 庆阳市| 四平市| 罗山县| 扎鲁特旗| 伊宁市| 淅川县| 中西区| 东至县| 公安县| 博爱县| 邓州市| 邵阳市| 丰城市| 延寿县| 英超| 玛曲县| 沿河| 株洲市| 宝山区| 雅安市| 射阳县| 乌苏市| 洞口县| 长岭县| 庆阳市| 通海县| 华容县| 九江县| 伊宁市| 亳州市| 天全县| 吴忠市|