背景
ディープラーニングとはなんぞやのとっかかりとしてまずは視覚的に見えるものを用意したい
所感
- 環境構築にめちゃめちゃ苦労した・・・参考サイト通りにうまいこと動かずいろんなサイトを巡っては振り出しの繰り返しでした
 - エラーが出たらとにかくログをチェックそこからGitのREADMEを読む
 - StackOverflowとQiitaはめちゃ助けられました
 
目的
- 下記サイトのブロック崩しを学習している様を視覚出来るようにする
 
必要な物
- tensolflow
 - keras
 - OpenAI Gym
 
動作環境
- Mac(OS X El Capitan)
 
とにかく動かすという点に絞ってますので的はずれな事もしてる可能性大なので実施の際は自己責任でお願いします。
Tensflowをインストール
参考サイトを鵜呑みにコピペで進めると必ず後悔します!自身の環境を照らし合わせながら進めることを強く推奨します!
pythonをインストールする
- macは既にpythonが入っているので入ってなければ2系をインストールしてください
 - 下記コマンドでバージョンを確認
 
python --version
要確認
- OSがEl Capitanでコマンド実行時に下記のように表示されていたらHomebrewでPythonをインストールを実行してください。ちょっと下に手順を掲載しています。
 
which python
/usr/bin/python
PyPIをインストールする
- インストールされているか下記コマンドで確認
 
pip -V
- なければ下記コマンドからインストールする
 
curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
TensolFlowをインストールする
必ず目的にあったものをインストールしましょう
- 今回は下記の要件でインストールします
 
- CPU
 - Mac
 - Python2系
 
sudo easy_install pip
sudo pip install --upgrade virtualenv
virtualenv --system-site-packages ~/tensorflow
- ~/tensorflowのディレクトリが出来ます
 
Activateする
下記コマンドでactivateします
source ~/tensorflow/bin/activate
- 終了するときは「deactivate」で終了します
 
インストールが上手くいかない場合
HomebrewでPythonをインストール
- 何度も躓いてやり直したので下記のhomebrewでPythonを入れたような気がするので下記も記録として残しておきます
 
HomebrewでPythonをインストール
brew update
brew install python 
pip install --upgrade pip setuptools
brew linkapps python
Pythonのパスをシェルの設定に書いてあげる
echo 'export PATH=/usr/local/bin:/usr/local/share/python:$PATH' >>~/.zshrc
source ~/.bash_profile
- 下記コマンドで確認
 
which python
/usr/local/bin/python
- 「/usr/local/bin/python」が表示されていればオッケー
 
Mac OS X El CapitanにTensorFlowをpipで入れるときの落とし穴
TensorFlowインストールでハマったとこ
- 正直どこではまってるかわからん部分が多い(そもそもハマってるかどうかすら気づいてない・・・)
 - Hello worldはすぐに出力できるけどMNISTとかでエラー出まくり
 - エラーが出たときはインストールでミスってる可能性が大
 - エラーが出たときはとにかくググるStackOverFlowあたりで同様の人がまあまあいる
 
一番ハマった部分
ImportError: No module named contrib.ctc
StackOverFlowにもあがってたけど自分の原因とは違うっぽい
このエラーはKerasインストールのフェーズでも苦しめられました
参考サイトのインストールメモをそのままにインストールしてたのが原因かもしれない。ドキュメントのインストール手引をしっかり読みましょう。
はっきりした原因は英語が翻訳できずふわっとした理解になりましたが要件にあった条件でインストールを何度もやり直すことで解消されました。
Kerasをインストール
apt-getを使えるようにする
- finkのサイトから自身のOSバージョンに合ったものをダウンロードして解答する
 - 下記コマンドを実行する
 
cd ~/Downloads/fink-0.39.2
./bootstrap
インストール中にいろいろ質問があうが基本デフォルトで問題なさそうです。時間はかなりかかります。
- finkをpath登録する
 
/sw/bin/pathsetup.sh
- Terminalを再起動でapt-getが利用可能になります。
 
# finkをアップデート
fink selfupdate-rsync
Kerasをインストールする
参考リンク:本家ドキュメント
- 下記コマンドを実行する
 
sudo pip install scipy
sudo pip install scikit-learn
sudo pip install pyyaml
sudo apt-get install libhdf5-dev
sudo pip install h5py
sudo pip install keras
libhdf5-devが見つからずインストールできなかったのでスキップしました。いらない?
- Pythonを起動してKerasを呼んで見る
 
python
import keras
とすると
Use Using Theano backend
か
Use Using TensorFlow backend
が出力されます
- 
Theanoと出力された場合(TensorFlowの場合でも確認はしてください)
 - 
下記ファイルを無ければ作成して編集する
 
vi ~/.keras/keras.json
{
    "image_dim_ordering": "th", 
    "epsilon": 1e-07, 
    "floatx": "float32", 
    "backend": "tensorflow"
}
- 上記のように編集します(これじゃないと次のOpenAIGymでエラーがでます)
 
参考リンク:バックエンドでTensorFlowを利用する
Keras動作確認
上記リンクを参考にいろいろ試して動作するか確認する
Kerasインストールではまったとこ
- そもそもTensolFlowのインストールの時点で間違っていることに気づかず進めたので地獄を見た
 - contrib.ctc絡みのエラー頻発
 - Kerasってなんぞやの状態で構築をしたのが最大の間違いかもしれない
 - 上記理由で構築中でも何をしてるか自分の立ち位置がわからず
 
contrib.ctcが憎い
- TensorFlowのインストールでもそうでしたが構築中に何度もこのエラーに頭を悩まされました
 - 上手く行って次進められると思ったらあらわれます
 - StackOverFlowでも似たような質問があって試してみたけどダメだった(この件に関してはTensorFlowのインストールがミスってる可能性大)
 
OepnAIGymをインストール
- これがインストールできれば終わりも近いです
 
OpenGymをインストール
git clone https://github.com/openai/gym
cd gym
pip install -e .
- 
とりあえずミニマムインストール
 - 
公式サイトのチュートリアルの「Running an environment」のソースをコピペ実行して動作するか確認する
 
必要なものをインストールしていく
- インストール自体は完了ですがこれでは目的のブツは動きません
 
Scikit-Imageをインストール
- 画像描画処理に関するアルゴリズムを集めたライブラリだそうです。下記コマンド実行でインストール
 
sudo pip install scikit-image
参考リンク:http://nonbiri-tereka.hatenablog.com/entry/2014/11/27/102156
matplotlibをインストール
- 実行時にmatplotlibがないとぐずってたのでこれもインストール
 - グラフ描画のライブラリっぽい。多分実行後のグラフを出力するのに利用されるっぽいたぶん
 
pip install matplotlib
pip install gym[all]する
- 最後にハマった場所。コマンド打っても「atari」で毎回コケるしStackOverFlowにも解決方法載ってない(糸口はあったけど)
 
このサイトで原因はわかったけどそもそもインストールでコケる・・・
- よくよく見たらGitHubに書いてたオチ
 
GitHubで「atari」を調べてみた
The Atari environments are a variety of Atari video games. 
If you didn't do     
the full install, you can install dependencies via 
pip install -e '.[atari]' 
(you'll need cmake installed) and then get started as follow:
- cmakeインストールが必要やでってことでインストールします
 
brew install cmake
参考リンク:http://a244.hateblo.jp/entry/2016/09/05/063000#CMake
- 再度OpenAIGymをインストール
 
pip instal gym[all]
これが通れば後は実行するだけ
ピンポールゲームを起動
ソースファイルを取得
git clone https://github.com/elix-tech/dqn
cd dqn
python dqn.py
- ゲームが起動して強化学習が始まります
 - dqn.pyファイルを編集することで学習内容をチューニングすることができます。
 
起動時にエラーが出る場合
- エラーをよく確認しましょう。あれこれインストールしてって表示されるので言われるがまま足りないものをインストールしていきましょう。
 - 以上で完了ですお疲れ様です
 
導入時に参考になったサイトのリンク集
https://github.com/fchollet/keras/pull/3436#issuecomment-240230596
http://stackoverflow.com/questions/39848466/tensorflow-keras-convolution2d-valueerror-filter-must-not-be-larger-than-t
http://tjo.hatenablog.com/entry/2016/06/09/190000
https://elix-tech.github.io/ja/2016/06/29/dqn-ja.html
https://keras.io/#getting-started-30-seconds-to-keras
http://tjo.hatenablog.com/entry/2016/06/09/190000
https://gym.openai.com/
http://qiita.com/masataka46/items/f64ce9c110113ab8e517
http://nonbiri-tereka.hatenablog.com/entry/2014/11/27/102156
https://github.com/fchollet/keras/pull/3827/commits/5ea4afe0d1b9d072e1cb793a277cc4037417b11a
https://github.com/fchollet/keras/pull/3436#issuecomment-240230596
https://keras.io/getting-started/sequential-model-guide/
http://qiita.com/bohemian916/items/4f0736dcea932a162d9e
https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#pip-installation
https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#test-the-tensorflow-installation
http://walkingmask.hatenablog.com/entry/2015/11/16/224638
http://qiita.com/shngt/items/0d9a5ea47dddd97fcd27
https://keras.io/ja/
http://pythondatascience.plavox.info/python%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/anaconda-ubuntu-linux/
http://kk6.hateblo.jp/entry/20110815/1313405197
http://qiita.com/yu-sa/items/351969b281f3aea5e03d
http://qiita.com/como1559/items/feac9bacbbf362817c66
http://qiita.com/masataka46/items/227fbfbda98a901f6720
http://qiita.com/masataka46/items/227fbfbda98a901f6720
http://a244.hateblo.jp/entry/2016/09/05/063000#CMake
http://stackoverflow.com/questions/39848466/tensorflow-keras-convolution2d-valueerror-filter-must-not-be-larger-than-t
