より広いネットワークで実験する
これで、さまざまなモデルを試す準備が整いました!
model_1 というモデルがあらかじめ読み込まれています。IPython Shell にこのモデルのサマリが表示されます。これは比較的小さなネットワークで、各隠れ層のユニット数は 10 です。
この演習では、model_1 と同様ですが各隠れ層のユニット数を 100 にした model_2 を作成します。
model_2 を作成した後、両方のモデルを学習させ、各エポックにおける両モデルの損失スコアを示すグラフを表示します。更新の表示を減らすため、学習時のコマンドには引数 verbose=False を追加してあります。グラフで確認するため、テキストでの出力は最小限にしています。
2つのモデルを学習させるため、Run Code を押してから出力が表示されるまで少し時間がかかります。しばらくお待ちください。
この演習はコースの一部です
Pythonで学ぶDeep Learning入門
演習の手順
model_1を踏襲してmodel_2を作成しますが、最初の2つのDense層では'relu'を活性化関数として用い、ノード数を10の代わりに100にしてください。出力のDense層はノード数を2、活性化関数を'softmax'にします。- これまでと同様に
model_2をコンパイルします。optimizerは'adam'、lossは'categorical_crossentropy'、metrics=['accuracy']を指定します。 - Submit Answer を押して2つのモデルを学習し、どちらがより良い結果かを可視化しましょう!
model.fit()のキーワード引数verbose=Falseに注目してください。モデルはテキストではなくグラフで評価するため、表示される更新が少なくなります。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define early_stopping_monitor
early_stopping_monitor = EarlyStopping(patience=2)
# Create the new model: model_2
model_2 = ____
# Add the first and second layers
____.____(____(____, ____=____, input_shape=input_shape))
____
# Add the output layer
____
# Compile model_2
____
# Fit model_1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Fit model_2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Create the plot
plt.plot(model_1_training.history['val_loss'], 'r', model_2_training.history['val_loss'], 'b')
plt.xlabel('Epochs')
plt.ylabel('Validation score')
plt.show()