一般的には最後に持ってくるのかと思いますが、今回はこのタイミングで見てみたいと思います。
Keras FAQ: Kerasに関するよくある質問
batchとepoch
batchはデータのまとまりになります。
データを表す多次元配列を「いくつを1まとめにして処理するか」という指定になります。
FAQをみると、大きければよいというものでは無い模様。
大きなデータの塊で学習回数を減らしてしまうか、小さなデータの塊で学習回数を増やすべきかという考察が必要になります。
epochは学習を実行する回数指定になります。
モデルの保存/読み込み
学習したモデルは精度が上がるまでは試行錯誤しますが、精度が高いモデルは保存して再利用します。
from keras.models import load_model model.save(filepath) keras.models.load_model(filepath)
訓練時のデータシャッフル
「shuffle」がTrueの場合はデータシャッフルされるとのこと。
デフォルトは「True」なので、デフォルトではシャッフルされてしまうということ。
MNISTなどはどちらでも変わらないと思いますが、LSTMのような時系列データだとシャッフルされない方が良いのではないかと思います。
ステートフルRNN
前の入力データを意識するかどうかで「ステートフル」「ステートレス」が変わってきます。
時系列データを扱う場合は前のデータからのつながりを意識するので「ステートフル」になります。
ステートフルRNNとして学習する場合は以下を行う必要があります。
連続データとして扱うので、シャッフルしない設定にするのが重要ですね。
- batch_sizeで入力データの次元を明示的に指定する
- 「statefule=True」をレイヤーで指定する
- fitに「shuffle=False」を指定する。
コメント