我們需要更多資料嗎?
現在要來檢查你所建置的 digits 資料集 model,是否能從更多訓練樣本中受益!
為了精簡程式碼,以下內容都已初始化並可直接使用:
- 你剛建好的
model。 X_train、y_train、X_test和y_test。- 你的模型以
model.get_weights()取得並儲存的initial_weights。 - 一個預先定義的訓練資料比例列表:
training_sizes。 - 一個預先定義、監控 loss 的提早停止回呼:
early_stop。 - 兩個用來儲存評估結果的空清單:
train_accs與test_accs。
請在不同的訓練資料比例上訓練模型,並在 X_test 上評估結果。
最後使用 plot_results() 繪製結果。
本練習的完整程式碼可在投影片中找到!
本練習屬於課程
Keras 深度學習入門
練習說明
- 依照迴圈中目前評估的
size,擷取相應比例的訓練資料。 - 使用
set_weights()將模型權重設為initial_weights,並在該訓練資料比例上訓練模型,把early_stop作為回呼函式。 - 評估並儲存該訓練資料比例與測試集的準確率。
- 呼叫
plot_results(),傳入每個訓練資料比例的訓練與測試準確率。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
for size in training_sizes:
# Get a fraction of training data (we only care about the training data)
X_train_frac, y_train_frac = X_train[:size], y_train[:size]
# Reset the model to the initial weights and train it on the new training data fraction
model.set_weights(____)
model.fit(X_train_frac, y_train_frac, epochs = 50, callbacks = [early_stop])
# Evaluate and store both: the training data fraction and the complete test set results
train_accs.append(model.evaluate(____, ____)[1])
test_accs.append(model.evaluate(____, ____)[1])
# Plot train vs test accuracies
plot_results(____, ____)