DeepCoder追実装記録 (2)
Livedoorブログからの移動
はてなブログからの移動
データセット生成の高速化
方法
入力の型(e.g., [Int], [List], [Int, List, List])ごとに別スレッドでdfsすることで高速化
- 入力の型が異なるプログラム同士はequivalenceの判定を省いているので、データ競合なく並列化が可能
- CPUでenumerateすることを考えたら、並列度を高くするよりはこの程度のほうが良いという判断
結果
コミットログによれば、20000件ほどのデータセット生成に1100secかかっていたのが、238secになったらしい(確かCore i5-5200U上)
学習
現状
学習データを200000件に増やして、再度学習させている。しかし、やはり過学習起こしているように見える。
モデルをシンプルにすると、(E=8
, K=128
, 変数の意味は元論文参照)lossが0.15あたりでとまってしまう。従って、モデルが複雑すぎるというよりデータがまだ少ないのかなという印象を持っている。
その他
学習には、g2.2xlargeインスタンスをスポットインスタンスで利用し、alpha=0.0001
としたAdamをOptimizerに、epoch=2500~5000
、バッチサイズ500~1000
で行っている。
今後
- N=100万くらいのデータセットを用意し、そこで学習データさせてみる
- 適当なプログラムで評価
- 元論文みたいな真面目な評価をする気はまったくない