過学習の検出
この演習では、手話アルファベットの元データセットから抽出した小さなサンプルを扱います。サンプルが小さく、かつパラメータ数の多いモデルを用いると、一般に過学習が起こりやすくなります。つまり、多くの例に共通する特徴を学ぶのではなく、各例のクラスを暗記してしまう状態です。
検証用サンプルの損失が学習用サンプルの損失より大幅に高く、学習を続けるほど増加するかどうかを確認して過学習を検出します。サンプルが小さく学習率が高い場合、モデルは最適値に収束しにくくなります。ここではオプティマイザの学習率を低く設定し、過学習を見つけやすくします。
keras は tensorflow からインポート済みであることに注意してください。
この演習はコースの一部です
Introduction to TensorFlow in Python
演習の手順
kerasでmodelという名前の順次モデルを定義します。- 最初の全結合層として、ノード数 1024、活性化関数
relu、入力形状 (784,) を追加します。 - 学習率を 0.001 に設定します。
fit()で全サンプルに対して 50 回反復し、検証にはサンプルの 50% を使用するように設定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define sequential model
____
# Define the first layer
____
# Add activation function to classifier
model.add(keras.layers.Dense(4, activation='softmax'))
# Finish the model compilation
model.compile(optimizer=keras.optimizers.Adam(lr=____),
loss='categorical_crossentropy', metrics=['accuracy'])
# Complete the model fit operation
model.fit(sign_language_features, sign_language_labels, epochs=____, validation_split=____)