iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

Tensorflow學習日記系列 第 18

tensorflow學習日記Day18 Overfitting和DropOut

  • 分享至 

  • xImage
  •  

overfitting:過度學習
https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Overfitting.svg/1200px-Overfitting.svg.png

假設今天我們是要把紅色點點和藍色點點分開,我們期望找到的是黑色的線也就是正規劃後的結果,而綠色的線則是overfitting的結果,雖然他正確的將紅色和藍色的點分開了,在訓練時準確率高,但是在未知資料上的準確率低。

可以參考這篇文章的解釋:
https://medium.com/雞雞與兔兔的工程世界/機器學習-ml-note-overfitting-過度學習-6196902481bb

上一篇文章將隱藏層神經元改為1000個後overfitting的狀況變嚴重了,所以這邊要使用DropOut功能來避免。

Dropout(0.5)在每次調整迭代時,會隨機在隱藏層中放棄50%的神經元來避免Overfitting

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
model = Sequential()
model.add(Dense(units=1000,input_dim=784,kernel_initializer='normal',activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(units=10,kernel_initializer='normal',activation='softmax'))
print(model.summary())
輸出模型摘要:
https://scontent.ftpe8-1.fna.fbcdn.net/v/t1.15752-9/72041450_709008206281851_5798863915899158528_n.png?_nc_cat=109&_nc_oc=AQnRqtopmK-lkO8nu4PTGQgVqnQ82JJNPXeAjUFVwRZRAjcNvKWj4JR0jLqavFZMTgE&_nc_ht=scontent.ftpe8-1.fna&oh=7f9780d438e2f9e2897fb7a9ef8a580c&oe=5E38F9F8
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
train_history=model.fit(x=x_Train_normalize,y=y_Train_OneHot,validation_split=0.2,epochs=10,batch_size=200,verbose=2)
輸出訓練結果:
https://scontent.ftpe8-4.fna.fbcdn.net/v/t1.15752-9/69113920_569516650451093_6188596472473190400_n.png?_nc_cat=110&_nc_oc=AQnUYpvkbkaqW2FtK2PwdFgEIu5CyS7LDn37KMEv94aCa4kYyrGVPkFBvIahzkcWDSc&_nc_ht=scontent.ftpe8-4.fna&oh=80051b2edd211189db81277502ee58fc&oe=5E21F731
show_train_history(train_history,'accuracy','val_accuracy')
輸出:
https://scontent.ftpe8-2.fna.fbcdn.net/v/t1.15752-9/71175478_2358892170826513_1285678488459673600_n.png?_nc_cat=101&_nc_oc=AQmQ41bMJPnky4ahLR6BJ9bfX37-kBWbXQ_z_MabU_rLipv48h-4Kztp8L8wlpnAGKQ&_nc_ht=scontent.ftpe8-2.fna&oh=ed3f49dbf79e78b2444f9c9bea6a7f20&oe=5E3DF646

可以看到overfitting的問題被改善,accuracy和val_accuracy的差距變小。


上一篇
tensorflow學習日記Day17 多元感知器模型 增加神經元
下一篇
tensorflow學習日記Day19 建立兩個隱藏層的多元感知器模型
系列文
Tensorflow學習日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言