Python Colaboratory

コ-ルバックを使用

ここまで、全結合モデルファイルを作成してきました。
引き続き、コ-ルバックを使用します。

  1. EarlyStopping

    EarlyStopping コ-ルバックを使うと検証デ-タでの損失値が改善されなくなった時点で、 訓練を中止することができます。
    第1引数には監視する損失関数名 loss の値 val_loss を指定します。
    monitor="val_loss"
    第2引数には悪化回数を設定します。
    patience=2
    今回は2回を設定しました。

  2. ModelCheckpoint

    ModelCheckpoint コ-ルバックを使うと最も性能の良いモデルを保存することができます。
    第1引数には保存用ファイル名 jena_dense.keras を設定します。
    保存フォルダは Google ドライブ \Colab Notebooks の中に \my_data を作成しておきます。
    save_best_only=True
    とするとベストモデルが保存されます。


以上、2つのコ-ルバックをまとめ callbacks_list とすると次のようになります。


callbacks_list = [
  keras.callbacks.EarlyStopping(
    monitor="val_loss",
    patience=2,
    ),
  keras.callbacks.ModelCheckpoint(
    "drive/MyDrive/Colab Notebooks/my_data/jena_dense.keras",
    save_best_only=True,
    )
]

compile メソッド

学習プロセスを設定します。
設定する引数は3つです。

  1. オプティマイザ optimizer

    損失関数に基づいてニュ-ラルネットワ-クをどのように更新するのかを指示します。
    指示が不適切だと、局所最適解しか見つからず大域最適解を見失います。
    要するに学習率ηをどのようにして決めるかの設定手法を指示するのです。
    なお、学習率については Keras モデルの構築/活性化関数 のところでも言及しました。
    詳細については書籍等値は難しい数式等を使って説明されているのですが、 私は理解するまでに至りませんでした。
    オプティマイザには
    SGD
    RMSprop
    Adam
    Adgrd
    等がありますが、まずは何も考えず
    rmsprop
    を指定します。
    optimizer="rmsprop"
    これにより、学習率を適切な値に調整してくれます。

  2. 損失関数 loss

    訓練中に最小化する数量を指定します。
    損失関数を名前で指定します。
    今回は
    平均二乗誤差(mean_squared_error)略して mse
    とします。
    損失関数にはいろいろ種類があるのですが mse は値が0に近づくと滑らかになる
    すなわち微分値が0になる性質を持っているので 勾配降下法で重みを探す RNN には都合のよい損失関数であり mse の決め打ちで良いと考えられます。
    loss="mse"

  3. 指標 metrics

    いろいろ種類があり学習したい内容に合った指標を決定します。
    RNN の時には mae を指定するのが定跡のようです。
    分類問題のケ-スでは accuracy(正解率)を指定するようです。
    mae は平均絶対誤差(Mean Absolute Error)の略称です。
    metrics="mae"


compile メソッドをまとめると次のようになります。
model.compile(optimizer="rmsprop", loss="mse", metrics=["mae"])

fit メソッド

モデルを適合させます。
fit()は訓練ル-プを実装するメソッドであり、設定する主な引数は5つです。

  1. 入力サンプル inputs

    NumPy 配列または TensorFlow の Dataset オブジェクトを指定。
    今回は後者 train_dataset を設定します。
    これは 各デ-タセットの内容表示 の中で苦労して作成した訓練デ-タセットです。
    やっとここで日の目を見ました。

  2. エポック epochs

    エポックは入力サンプルに対して訓練を繰り返す回数。
    EarlyStopping が発動されて訓練が中止されますので、大きめの値を設定します。
    小さな値にすると EarlyStopping が発動される前に訓練は終了します。
    今回は
    epochs=40
    とします。

  3. 進行状況表示 verbose

    fit メソッドを実行するといろいろとフィティング状況を報告してきます。
    進行状況表示なしにしたいときもあります。
    そんなときは
    verbose=0
    とすると進捗状況なしで実行することができます。

  4. 検証デ-タ validation_data

    NumPy 配列または TensorFlow の Dataset オブジェクトを指定。
    今回は後者 val_dataset を設定します。
    validation_data=val_dataset
    これも 各デ-タセットの内容表示 の中で苦労して作成した検証デ-タです。
    やっとここで日の目を見ました。

  5. コ-ルバック callbacks

    このペ-ジの最初に作成したコ-ルバック作法も組み込みます。
    callbacks 引数として設定します。
    callbacks=callbacks_list


fit メソッドを history と言う名前のオブジェクトで受け取ります。
まとめると次のようになります。


history = model.fit(
  train_dataset,
  epochs=40,
  # verbose=0,
  validation_data=val_dataset,
  callbacks=callbacks_list)

損失曲線表示

訓練デ-タと検証デ-タの損失[平均絶対誤差(MAE)]曲線をプロットします。
history オブジェクトには history というフィ-ルドがあります。
このなかに、損失 loss, val_loss の値が保存されています。
この値を matplotlib を使ってプロットし見える化します。


from matplotlib import pyplot as plt
loss = history.history["mae"] # 平均絶対誤差(MAE)
val_loss = history.history["val_mae"]
epochs = range(1, len(loss) + 1)
plt.figure()
plt.plot(epochs, loss, "bo", label="Training MAE")
plt.plot(epochs, val_loss, "b", label="Validation MAE")
plt.title("Training and Validation MAE")
plt.legend()
plt.show()  

ここまでで、全結合モデルファイルにコ-ルバック、compile メソッド、fit メソッドを組込み、 history オブジェクトを構築しました。
引き続き、これまでの各デ-タセットと合体し、全結合モデルファイルをまとめます。


  • 全結合モデルファイルまとめ に進む
  • 全結合モデル後半作成 に戻る
  • 大域最適解みつからず に戻る
  • Keras モデルの構築 に戻る
  • keras-test-51 動作確認 に戻る
  • 各デ-タセットの内容表示 に戻る
  • 3種の timeseries_dataset デ-タを作成 に戻る
  • CSV timeseries_dataset まとめ に戻る
  • CSV デ-タ timeseries_dataset 作成 に戻る
  • 標準化した dummy_dataset を作成 に戻る
  • dummy_dataset の内容表示 に戻る
  • RNN の理解-Ⅱ に戻る
  • 時系列のためのディ-プラ-ニング に戻る
  • ロ-ソク足表示ファイルまとめ に戻る
  • ロ-ソク足本体の表示 に戻る
  • Colab で mplfinance を使用 に戻る
  • CSV ファイルの読込 に戻る
  • Colab を始める に戻る
  • 70VPS に戻る