データをもっと増やすべきでしょうか?
作成した digits データセット の model が、より多くの学習サンプルで性能向上するか確認してみましょう!
コード量を最小限にするため、次のものはすでに初期化済みで利用できます。
- 先ほど作成した
model X_train、y_train、X_test、y_testmodel.get_weights()で保存したモデルの初期重みinitial_weights- 事前定義された学習サイズのリスト
training_sizes - loss を監視する事前定義の EarlyStopping コールバック
early_stop - 評価結果を格納する空リスト
train_accsとtest_accs
異なる学習サイズでモデルを学習し、X_test で結果を評価してください。
最後に plot_results() で結果をプロットします。
この演習の完全なコードはスライドにあります!
この演習はコースの一部です
Kerasで学ぶIntroduction to Deep Learning
演習の手順
- ループ内で現在評価中の
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(____, ____)