ネットワークにレイヤーを追加する
これまでにより横に広いネットワークの試し方を見てきました。この演習では、より深いネットワーク(隠れ層を増やす)に挑戦します。
今回も出発点として model_1 というベースラインモデルがあります。これは隠れ層が1つで、ユニット数は 10 です。そのモデル構造のサマリーが表示されています。ここでは、各レイヤーのユニット数を10のままにして、隠れ層を3つ持つ同様のネットワークを作成します。
両方のモデルの学習には少し時間がかかるため、コードを実行した後、結果が表示されるまで数秒お待ちください。
この演習はコースの一部です
Pythonで学ぶDeep Learning入門
演習の手順
model_1と同様の構成で、ただし隠れ層を1つではなく10ユニットの隠れ層を3つ持つようにしたmodel_2を定義してください。- 最初の隠れ層では
input_shapeを使って入力形状を指定します。 - 3つの隠れ層には
'relu'活性化関数を、出力層には'softmax'を使用し、出力層のユニット数は2にします。
- 最初の隠れ層では
- これまでと同様に
model_2をコンパイルします。optimizerは'adam'、lossは'categorical_crossentropy'、metrics=['accuracy']としてください。 - 両方のモデルを学習してどちらが良い結果かを可視化するために、"Submit Answer" を押してください!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# The input shape to use in the first hidden layer
input_shape = (n_cols,)
# Create the new model: model_2
model_2 = ____
# Add the first, second, and third hidden layers
____
____
____
# Add the output layer
____
# Compile model_2
____
# Fit model 1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.4, verbose=False)
# Fit model 2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.4, 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()