訓練 Keras 模型


已經完成標示的圖像分類數據集, 模型也設計出來了, 沒有真正訓練過一次, 我們不知道這樣的設計是否真的夠用. 只能先訓練看看.

有了模型那還不夠, 我們必須要告訴模型要用的最佳化方法是什麼 (optimizer)? 最佳化的依據是降低預測錯誤的損失, 那如何計算損失 (loss)? 優化過程中要觀察的指標是什麼 (metrics)? 這些 keras 都有提供現成的 API 可調用. 我們唯一要做的就是 用 model.compile 綁定.

另外有一個選項可以做: callbacks, callback 讓我們在訓練過程中, 某個階段 (例如完成某一個 epoch; 或是剛要開始某一個 batch) 的時候做點事, 例如: 我們怕訓練過程出意外(斷電?!) 我們可以將剛訓練的模型存進硬碟, 下次可以從這裡開始訓練, 而不用從頭開始. 又例如我們不希望模型 overfitting 太離譜, 當偵測到訓練已經達到我們預定 overfitting 條件時, 我們希望 early stop, 而不是傻傻跑完預定的回合數. 如果我們習慣用 tensorboard 來觀察模型訓練過程, 我們必須在訓練過程中把每個 log 紀載下來, tensorboard 才能輸出報表.

我們依照上面思路用 Keras 程式碼編寫下來如下: