ubuntu18のkeras-rl環境構築

# 概要

強化学習を勉強するための環境構築メモを残しておく。

参考サイト
https://github.com/keras-rl/keras-rl
他多数の環境構築手順を紹介しているサイト


## PC環境

|項目              |                              値|
|:-----------------|:------------------------------:|
|OS                |                     18.04.1 LTS|
|CUDA              |                        10.0.130|
|cuDNN             |                         7.4.2.2|
|Python環境        |     Anaconda 3.5.2(Python3.6.8)|
|TensorFlow        |                          1.14.0|
|Keras             |                           2.2.4|
|Keras-rl          |                           0.4.2|
|gym               |                          0.13.1|
|gym[atari]        |                          0.13.1|


CUDAやcuDNNのインストール手順は省略する。


## 作業項目

- anacondaインストール
- 環境変数の設定
- openCV3インストール（オプション）
- TensorFlowインストール
- numpyダウングレード
- TensorFlow 動作確認（import確認）
- kerasインストール
- keras-rlインストール
- OpenAI gymインストール
- keras-rl動作確認


### anacondaインストール

anaconda 3.5.2をダウンロードする。


```
wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
```

実行権を付与して、インストールを実行する。

```
chmod 744 ./Anaconda3-5.2.0-Linux-x86_64.sh
./Anaconda3-5.2.0-Linux-x86_64.sh
```

インストール時の選択。


```
Do you accept the license terms? [yes|no]
[no] >>> yes

[/(ホーム)/anaconda3] >>> $(ホーム)/anaconda/anaconda352_rl

-> インストールが開始される。

to PATH in your /(ホーム)/.bashrc ? [yes|no]
[no] >>>

Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]
>>> no
```

これでインストール完了。


### 環境変数の設定

.bash_profileに環境変数を設定する。
cudaとcuDNNの環境変数もここでセットしておく。

```
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# anaconda(python3) "base" environment
export ANACONDA=$HOME/anaconda/anaconda352_rl
export LD_LIBRARY_PATH=$ANACONDA/lib:$LD_LIBRARY_PATH
export PATH=$ANACONDA/bin:$PATH

# cuda10.0
export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export PATH=$CUDA_HOME/bin:$PATH

# cudnn7
export CUDNN=$HOME/cudnn/cudnnv742_cuda100
export LD_LIBRARY_PATH=$CUDNN/lib64:$LD_LIBRARY_PATH

```


### openCV3インストール（オプション）

たぶん要らないと思うけど念のため。

```
conda install -c menpo opencv=3
```


### TensorFlowインストール


Tensorflow2.0はまだ手を出してない。
余談だけど、テンサフローって読むらしい。どっちでもいいのかな。


```
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.14.0-cp36-cp36m-linux_x86_64.whl
```

### numpyダウングレード


1.16系だとエラーになるっぽいので念のため。

```
pip install numpy==1.15.4
```


### TensorFlow 動作確認（import確認）


pythonを対話形式で実行して、importできること、tensorflowバージョンが返ってくればOK。

```
import tensorflow as tf
hello = tf.constant('Hello, Tensorflow!')
sess = tf.Session()
print(sess.run(hello))
tf.__version__
```


### kerasインストール


主要なライブラリは、バージョン指定してインストールするほうがよい。
バージョン未指定のインストール手順はあまり好きじゃない。

```
pip install keras==2.2.4
```


### keras-rlインストール

```
pip install keras-rl==0.4.2
```


### OpenAI gymインストール

```
pip install gym==0.13.1
pip install gym[atari]==0.13.1
```


### keras-rl動作確認


有名なcartpoleのexampleを実行してみる。

```
git clone https://github.com/keras-rl/keras-rl.git
```

CUI環境での動作確認なので、実行ファイルの中身を一部修正する（visualize=Falseに書き換え）


keras-rl/examples/dqn_cartpole.py


```
# 46行目(visualize=False)
dqn.fit(env, nb_steps=50000, visualize=False, verbose=2)

# 52行目(visualize=False)
dqn.test(env, nb_episodes=5, visualize=False)
```

実行する。

```
python keras-rl/examples/dqn_cartpole.py

```

実行ログ。こんな結果が返ってくればOK。

```
Using TensorFlow backend.
WARNING: Logging before flag parsing goes to stderr.

(省略)

49936/50000: episode: 309, duration: 0.848s, episode steps: 195, steps per second: 230, episode reward: 195.000, mean reward: 1.000 [1.000, 1.000], mean action: 0.523 [0.000, 1.000], mean observation: 0.353 [-1.283, 2.271], loss: 4.842455, mean_absolute_error: 41.189602, mean_q: 82.372498
done, took 213.446 seconds
Testing for 5 episodes ...
Episode 1: reward: 200.000, steps: 200
Episode 2: reward: 200.000, steps: 200
Episode 3: reward: 200.000, steps: 200
Episode 4: reward: 200.000, steps: 200
Episode 5: reward: 191.000, steps: 191
```

以上。