調整最佳化參數
現在來動手進行最佳化吧。你將以非常低、非常高,以及「剛剛好」的學習率來嘗試最佳化模型。完成後請查看結果,並記得損失函式的值越低越好。
在這些練習中,我們已經幫你載入先前分類模型(預測誰能在鐵達尼號事件中倖存)所用的 predictors 與 target。每次更改學習率時,你都希望最佳化能從頭開始,才能公平比較不同學習率的效果。因此,我們提供了一個 get_new_model() 函式,用來建立尚未最佳化、可供你進行最佳化的模型。
本練習屬於課程
Python 深度學習入門
練習說明
- 從
tensorflow.keras.optimizers匯入SGD。 - 建立一個名為
lr_to_test的學習率清單,用來嘗試最佳化。清單中的學習率應為.000001、0.01、1。 - 使用
for迴圈走訪lr_to_test:- 使用
get_new_model()函式建立一個新的、尚未最佳化的模型。 - 使用
SGD()建構子並以關鍵字引數lr=lr建立名為my_optimizer的最佳化器。 - 編譯模型。將
optimizer參數設為你建立的 SGD 物件;因為這是分類問題,loss參數請使用'categorical_crossentropy'。 - 使用
predictors與target來訓練模型。
- 使用
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Import the SGD optimizer
____
# Create list of learning rates: lr_to_test
lr_to_test = ____
# Loop over learning rates
for lr in lr_to_test:
print('\n\nTesting model with learning rate: %f\n'%lr )
# Build new model to test, unaffected by previous models
model = ____
# Create SGD optimizer with specified learning rate: my_optimizer
my_optimizer = ____
# Compile the model
____
# Fit the model
____