Gymで実装するという大変素晴らしい記事を読んで実際にDQNを動かしてみたくなった。強化学習はそれほど興味がなかったんだけどブロック崩しがだんだんかしこくなっていくのを実際に見てみたいなと思って。手持ちのMacで動かすところまでやったんだけど仕事に使ってるPCなので長時間学習させられる環境じゃない。Gym&TensorFlow&Kerasの環境をセットアップして記事のサンプルコードであるelix-tech/dqnを動かすところまでやってみた。コードがPython3.xじゃ動かなくて修正したりしたので、せっかくなのでメモっておきます。16.04をインストール直後の状態から。Ubuntuをアップグレードして必要なモジュールをインストールする。以下のように記述する。PYENV_VIRTUALENV_DISABLE_PROMPT=1.bash_profileを反映する。3.5.3TensorFlow、Keras他必要なモジュールをインストールする。今回はGPUが使えない仮想マシンで立てたのでTensorFlowはCPUにしました。tensorflow-gpuをインストールする場合はこちらを参照するなどして別途CUDAの環境を整えてください。Gymをインストールする。今回の訓練環境はATARIのゲームのみをインストールした。'.[all]'すればいいみたい。'.[atari]'うまくセットアップできたか確認するため、インベーダーゲームを動かしてみる。invaders.py動いた。Gymで実装するのコードを動かしてみる。~/.keras/keras.jsonを編集して配列順をTheano仕様に変更する。上記のコードがそうなっているため。"float32"}次に、コードをcloneする。dqndqn.pyを以下のコードにまるごと置き換える。gistにも貼っときました。変更してるのは主に以下が理由。xrangeはPython3.xで削除されたTensorFlow1.0とそれ以前とでクラス体系とメソッド名が変わったので大量にAttributeErrorが出る。エラーでつまづいてしまう人のための移行ガイドを参考にメソッド名を書き換えた。Falseとしておく。動くかテストモードで確認するため。main()実行する。強化学習をさせてみる。Trueとして実行する。