昨天已經架設好網路架構,再來就是啟動讓他開始訓練模型拉!那這裡我用了一個滿重要的技巧叫做回調函數Callbacks(ModelCheckpoint),透過回調函數可以在我們訓練的過程中紀錄最好的model!
call = ModelCheckpoint('good.h5',
monitor = 'val_loss',
verbose = 0,
save_best_only = True,
save_weights_only = True,
mode = 'auto',
period = 1)
#ModelCheckpoint:!.保存的名稱2.要監視的值3.訊息展示的樣子4.5.設置為True的時候,當監視的數值變低會立即保存,也就是保存最好的(所以也有人會讓epochs很大很大去抓最好的,但神經網路或是資料沒有多做什麼調整其實不會差到太多)6.auto模式下在比對你的監視值他會自己判斷是不是變好還是變差,要不要儲存7CheckPoint間的epcoh數
model = model()
history = model.fit(X_trian_normal_data, Y_trian,
validation_data = [X_validation_normal_data, Y_validation],
callbacks = [call],
epochs = 600,
batch_size = 512, verbose = 1)
#model.fit的1.2.之前就有介紹過拉;3.validation_data就是加入驗證集去讓超參數跑得更好;4.callbacks看是否要使用,然後設定是怎樣子;5.epochs完整的資料要疊代幾次6.每次的批次大小是多少7.verbose:0是不輸出進度條;1是輸出進度條
輸出:
#history 會記錄訓練的狀況,會將model.fit回傳的東西記錄下來,以下是常用的示範
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc = 'upper right')
plt.show()
輸出:
明天是分享如何將結果應用至test資料集並將其打包上傳至kaggle網站看看自己跟其他人的差別!
感謝大家的體諒了!也希望自己在忙碌之餘能繼續秉持著實在的精神。