編譯並訓練模型
既然你已經有一個包含 2 個輸出的模型,請用 2 個 loss 來編譯它:對於 'score_diff' 使用平均絕對誤差(MAE),對於 'won' 使用二元交叉熵(也稱為 logloss)。接著,以 'seed_diff' 和 'pred' 作為輸入來訓練模型。輸出則同時預測 'score_diff' 與 'won'。
這個模型可以利用比賽的分數來確保接近的比賽(分差小)比起大比分差的比賽(分差大)有更低的獲勝機率。
相較於分類問題,迴歸問題較容易,因為 MAE 對於因隨機因素導致的誤差懲罰較輕。例如,如果 score_diff 為 -1 且 won 為 0,代表 team_1 運氣不佳,僅以一記罰球之差落敗。這個較容易的任務所提供的資料,有助於模型找到較困難任務的解法。
本練習屬於課程
使用 Keras 的進階深度學習
練習說明
- 從
keras.optimizers匯入Adam。 - 以 2 個 loss 編譯模型:
'mean_absolute_error'與'binary_crossentropy',並使用學習率為 0.01 的 Adam 最佳化器。 - 以
'seed_diff'和'pred'欄位作為輸入,'score_diff'和'won'欄位作為目標來訓練模型。 - 使用 10 個 epochs,batch size 設為 16384。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Import the Adam optimizer
____
# Compile the model with 2 losses and the Adam optimzer with a higher learning rate
model.____(loss=['____', '____'], optimizer=____)
# Fit the model to the tournament training data, with 2 inputs and 2 outputs
model.____(games_tourney_train[['____', '____']],
[games_tourney_train[['____']], games_tourney_train[['____']]],
epochs=____,
verbose=True,
batch_size=____)