Edited at

ディープラーニングを理解するために環境を作ってみた

More than 1 year has passed since last update.


背景


ディープラーニングとはなんぞやのとっかかりとしてまずは視覚的に見えるものを用意したい


所感


  • 環境構築にめちゃめちゃ苦労した・・・参考サイト通りにうまいこと動かずいろんなサイトを巡っては振り出しの繰り返しでした

  • エラーが出たらとにかくログをチェックそこからGitのREADMEを読む

  • StackOverflowとQiitaはめちゃ助けられました


目的


  • 下記サイトのブロック崩しを学習している様を視覚出来るようにする

https://elix-tech.github.io/ja/2016/06/29/dqn-ja.html


必要な物


  • 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をインストールする

必ず目的にあったものをインストールしましょう


  • 今回は下記の要件でインストールします


  1. CPU

  2. Mac

  3. 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にもあがってたけど自分の原因とは違うっぽい

http://stackoverflow.com/questions/39661433/keras-import-fails-no-module-named-contrib-ctc

このエラーは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 .


必要なものをインストールしていく


  • インストール自体は完了ですがこれでは目的のブツは動きません


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ファイルを編集することで学習内容をチューニングすることができます。

スクリーンショット 2016-11-25 11.51.06.png


起動時にエラーが出る場合


  • エラーをよく確認しましょう。あれこれインストールしてって表示されるので言われるがまま足りないものをインストールしていきましょう。

  • 以上で完了ですお疲れ様です


導入時に参考になったサイトのリンク集

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