Python Colaboratory
keras-test-53 動作確認
全結合モデルファイル
keras-test-53.ipynb
が完成しましたので Colab の中で動かしてみましょう。
Colab 内の左上隅にある「ファイル」から「ノ-トブックを新規作成」をクリック。
ファイル内容をコピしてこれをノートブックの画面内のボックス(セル)のなかに
貼付け[Ctrl + v]ます。
画面上部のファイル名をクリックして、ファイル名を
keras-test-53.ipynb
に変更します。
ドライブのマウントをします。
左端にある「□」をクリックし、次にマウントマ-ク
をクリックします。
すると、マウントマ-クに「\」が入ります。
その後、▷ をクリックして動作させます。
下記のようになるはずです。
Epoch 1/40 3/3 [===] - 1s 323ms/step - loss: 0.7151 - mae: 0.7040 - val_loss: 0.2704 - val_mae: 0.4150 Epoch 2/40 3/3 [===] - 0s 51ms/step - loss: 0.1955 - mae: 0.3364 - val_loss: 0.0934 - val_mae: 0.2163 Epoch 3/40 3/3 [===] - 0s 59ms/step - loss: 0.0699 - mae: 0.1783 - val_loss: 0.0444 - val_mae: 0.1496 ~~~~ ~~~~ Epoch 26/40 3/3 [===] - 0s 59ms/step - loss: 0.0081 - mae: 0.0653 - val_loss: 0.0074 - val_mae: 0.0614 Epoch 27/40 3/3 [===] - 0s 43ms/step - loss: 0.0075 - mae: 0.0647 - val_loss: 0.0095 - val_mae: 0.0870 Epoch 28/40 3/3 [===] - 0s 44ms/step - loss: 0.0086 - mae: 0.0686 - val_loss: 0.0082 - val_mae: 0.0738
keras-test-53 結果検証
ここまでで、全結合モデルファイルを動作させることができました。
引き続き、全結合モデルファイル keras-test-53 がうまく動作したか検証します。
fit() を呼び出すと History オブジェクトが返されます。
このオブジェクトには history というフィ-ルドがあります。
名前が紛らわしいです。
History と history もっと違う名前にしてほしい!
このフィ-ルドには、エボックの進捗につれて
loss:訓練デ-タセットでの損失値 mse(各誤差の二乗の平均)
mae:訓練デ-タセットでの損失値 mae(各誤差の絶対値の平均)
val_loss:検証デ-タセットでの損失値 mse(各誤差の二乗の平均)
val_mae:検証デ-タセットでの損失値 mae(各誤差の絶対値の平均)
の値がどのように変化したか保存されます。
平均誤差
ここで、平均誤差について少し説明します。
- MSE
平均二乗誤差
MSE:Mean Squared Error
とは各データに対して「予測値と正解値の差(=誤差)」の二乗値を計算し
その総和をデータ数で割った値(=平均値)を出力します。
yyi:i 番目の予測値
yi :i 番目の正解値
n :デ-タ数
とし、数式で表すと下記のようになります。
- MAE
平均絶対誤差
MAE:Mean Absolute Error
とは各データに対して「予測値と正解値の差(=誤差)」の絶対値を計算し
その総和をデータ数で割った値(=平均値)を出力します。
数式で表すと下記のようになります。
結果検証詳細
それでは結果検証内容を詳しく見ていきます。
- Epoch 1/40 3/3
訓練を繰り返す回数-エポック数は
epochs=40
と設定しました。
よって最初は 1/40 と表示されました。
そして訓練デ-タセットとして Input される train_dataset は batch_size=32 ごとに配列のなかで分割されているので
20×32 + 20×32 + 20×16
の3分割されています。
よって 3/3 の処理をしたと表示されます。 - 処理時間
最初は 1 Epoch 当たりの処理時間は 1.323 s かかったことがわかります。
そのあとは 50 ms くらいまで速くなりました。
全体でも 2~3 秒といったところでしょうか。
まずまずの処理時間といえると思います。 - 損失値
loss, mae, val_loss, val_mae
の値がエポック数が増えるにつれ順調に下がっています。
しかし 26回目と比較し 27回目と 28回目で val_loss 値が悪化しました。
Epoch 26/40 loss: 0.0081 - mae: 0.0653 - val_loss: 0.0074 - val_mae: 0.0614 Epoch 27/40 loss: 0.0075 - mae: 0.0647 - val_loss: 0.0095 - val_mae: 0.0870 Epoch 28/40 loss: 0.0086 - mae: 0.0686 - val_loss: 0.0082 - val_mae: 0.0738
EarlyStopping コ-ルバックで 監視する損失関数名 loss の値に val_loss を指定しました。
monitor="val_loss"
そして、悪化回数を
patience=2
としました。
よって 28回目で EarlyStopping 成立、エポックは終了しています。 - 損失曲線確認
訓練デ-タと検証デ-タの損失[平均絶対誤差(MAE)]曲線も確認しましょう。
下図のようになります。
あとは、ModelCheckpoint コ-ルバックを使って最も性能の良いモデルを保存したはずなので
その内容を確認していきます。
これがなかなか大変です。