Git のコミットのタイムスタンプには author date と committer date の 2 種類があるという話 - ひだまりソケットは壊れない
[TF]KerasでModelとParameterをLoad/Saveする方法 - Qiita
コールバックを設定すると「前Epochよりモデルが改善されていたら更新」ができる qiita.com
今回は試しに学習させてみたところ、途中でエラーが出て止まってしまった。再帰的に直前の存在する日時インデックスを取得するメソッドにバグがあったので、この機会にもっとシンプルな実装へ変更した。
(前略) [2017-04-01 15:05:29,613] before 2010-09-04T16:01:00.000000+0000 [2017-04-01 15:05:29,613] 2010-09-04T16:01:00.000000+0000 1283616000.0 [2017-04-01 15:05:29,613] 1283616000.0 after [2017-04-01 15:05:29,614] after2010-09-04T16:01:00.000000+0000 [2017-04-01 15:05:29,614] 2010-09-04T16:01:00.000000+0000 1283616060.0 [2017-04-01 15:05:29,614] 1283616060.0 Fatal Python error: Cannot recover from stack overflow. Current thread 0x00007f451c9c2700 (most recent call first): File "/opt/conda/lib/python3.5/site-packages/pandas/core/base.py", line 877 in _values File "/opt/conda/lib/python3.5/site-packages/pandas/indexes/base.py", line 1305 in <lambda> File "/opt/conda/lib/python3.5/site-packages/pandas/indexes/base.py", line 1084 in is_monotonic_increasing File "/opt/conda/lib/python3.5/site-packages/pandas/tseries/frequencies.py", line 755 in __init__ File "/opt/conda/lib/python3.5/site-packages/pandas/tseries/frequencies.py", line 724 in infer_freq File "/opt/conda/lib/python3.5/site-packages/pandas/tseries/base.py", line 303 in inferred_freq File "/opt/conda/lib/python3.5/site-packages/pandas/tseries/index.py", line 1466 in _get_string_slice File "/opt/conda/lib/python3.5/site-packages/pandas/tseries/index.py", line 1414 in get_loc File "/opt/conda/lib/python3.5/site-packages/pandas/tseries/base.py", line 234 in __contains__ File "/opt/conda/lib/python3.5/site-packages/pandas/core/indexing.py", line 1410 in _has_valid_type File "/opt/conda/lib/python3.5/site-packages/pandas/core/indexing.py", line 1482 in _getitem_axis File "/opt/conda/lib/python3.5/site-packages/pandas/core/indexing.py", line 1312 in __getitem__ File "Keras-RL_DQN_FX.py", line 60 in get_last_exist_datetime_recursively File "Keras-RL_DQN_FX.py", line 65 in get_last_exist_datetime_recursively File "Keras-RL_DQN_FX.py", line 65 in get_last_exist_datetime_recursively File "Keras-RL_DQN_FX.py", line 65 in get_last_exist_datetime_recursively File "Keras-RL_DQN_FX.py", line 65 in get_last_exist_datetime_recursively File "Keras-RL_DQN_FX.py", line 65 in get_last_exist_datetime_recursively (後略)
試しに学習させたところ、 HistData.get_last_exist_datetime_recursively() に 2010-09-04T16:01:00 を与えるとスタックオーバーフローで終了するバグがあった。
もっとシンプルな実装に変更する。
一つ心配事は、土日等休場日も学習すべきかどうかである。おそらく、48時間全く値動きがないことを学習しても仕方ないので、これは飛ばして良いと思う。問題はその次の数分の欠測である。欠測の間は値動き無しとして学習するのが良いのか、純粋に経過時間(分)で学習するのが良いのかは、明確な答えを持っていない。一旦、閾値までの間値動きがなければ、次の値動きまでスキップするようにしようと思う。
時間のある時にきちんとチェックする必要があるが、UdacityのMachine Learning for Tradingでは、休場中を特別な扱いはしていなかったような記憶がある(間違っていたら修正する必要がある)。したがって、メソッド is_datetime_diff_in_threshould()
を作ったが、今は使わないでおくことにする。
学習モデルを1エポック毎または学習結果が良くなるエポック毎にアウトプットしておいて、Soft Off信号を受け取ったらそれをGCSなりS3なりに置けば良いか https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance#handle_preemptioncloud.google.com
プリエンプティブVM=AWSのスポットインスタンス https://cloud.google.com/container-engine/docs/preemptible-vm?hl=jacloud.google.com
学習の途中経過をチェックポイントとして保存し、後から読み込んで利用する方法。AWSのスポットインスタンスを使って、インスタンスが死ぬ直前にHDF5ファイルを吐けば安価で学習を回せるか? machinelearningmastery.com
http://tensorflow.classcat.com/2016/10/25/google-cloud-datalab-notebook-on-gcp/tensorflow.classcat.com
面白い試み thenextweb.com