今更ながらTensorFlowとKerasのセットアップをしてみる

Python環境は、

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">TensorFlowをインストールする際、pipではなくcondaを使うべしという記事。<a href="https://t.co/sHbQaqdS1v">https://t.co/sHbQaqdS1v</a> 必要なcuDNNやCUDAのライブラリも一括してインストールしてくれるようになったばかりか、CPU処理の最適化までしてくれるらしい (CPUで x8のパフォーマンス!!) 知らなかった! <a href="https://t.co/1E17FZcccW">pic.twitter.com/1E17FZcccW</a></p>&mdash; Nao Tokui (@naotokui) <a href="https://twitter.com/naotokui/status/1054682573975273472?ref_src=twsrc%5Etfw">2018年10月23日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

という話があるので、minicondaを使ってみることにする。Python環境自体はすでにanyenvとそれによってインストールされているpyenvが入っているので、次のコマンドでオッケー。

```
$ pyenv install miniconda3-latest
```

それを適当な作業用ディレクトリを作ってそこで次のコマンドでminicondaを有効にする。

```
$ pyenv local miniconda3-latest
```

TensorFlowがpython3.6までがrequiredされているので、仮想環境として下記の環境を作った。

```
$ conda create --name tensorflow-keras python=3.6
```

仮想環境のアクティベート。

```
$ conda activate tensorflow-keras
```

このとき.bash_profileにパスを通す必要などがある旨が表示されるかもなのでその辺はよしなに。

※追記
表示されるパスをいれるとpyenvのlocalが効かなくなってなんか嫌なので調べたところ、pathを通してあげればいい模様。以下のようにした。参照したのはコチラ [https://qiita.com/y__sama/items/f732bb7bec2bff355b69](https://qiita.com/y__sama/items/f732bb7bec2bff355b69)

```
$ echo 'alias conda_activate="source $PYENV_ROOT/versions/miniconda3-latest/bin/activate"' >> ~/.bash_profile
$ source .bash_profile
$ conda_activate tensorflow-keras
(tensorflow-keras) $ 
```

pyenvとminicondaでのactivate環境は機能として競合してるので、pyenv local で指定したminicondaは仮想環境作りの場所でしかなくて、その後はどこでactivateさせても問題ない。ちなみに deactivate は

```
(tensorflow-keras) $ conda deactivate
$ conda deactivate
```
で行える。追記おわり。

で、activate出来たら

```
(tensorflow-keras) hoge:~$ 
```

こんな感じのプロンプトになると思います。で、tensorflowのインストール

```
$ conda install tensorflow
```

続いてkeras

```
$ conda install keras
```

作業環境にJupyter Notebookを使いたいので

```
$ conda install Jupyter
```

Jupyter Notebookで使いたいライブラリなどはその都度入れていくことにしてここでは触れない。

というわけで、Jupyter notebookが起動するか確認。

```
$ jupyter notebook
```

ばっちり起動した。終了はctrl-cで終了できる。
次にtensorflowとkerasの動作を確認したい。

こちらを参考に公式のインストールテストを行ってみた。[https://qiita.com/bohemian916/items/4f0736dcea932a162d9e](https://qiita.com/bohemian916/items/4f0736dcea932a162d9e)

然る可きディレクトリで、Jupyter Notebookの右上の"New"から"Python3"を選択すると、Pythonの実行環境になるのでそこに下記のようなインストールテストのプログラムを実行(実行はShift + Enter)

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

```
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
```

実際の画面ではこんな感じに結果が帰ってくる。

<img width="958" alt="Screen Shot 2018-11-01 at 6.39.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/18839/a5364a8b-b2fa-f3e7-8b92-dc9de0b0c49e.png">

kerasの動作確認はこちらのサイトあたりを参照しておこなった [https://www.infiniteloop.co.jp/blog/2017/11/learning-keras-01/](https://www.infiniteloop.co.jp/blog/2017/11/learning-keras-01/)

で、keras, tensorflowのアンインストールは、、、

```
$ conda uninstall <Packagename>
```

で行なえる。順番的に依存関係があると嫌なのでインストールの順番と逆にやってみたけど、多分どちらからでも問題ない。

一番先で引用したツイート内のリンクでgpu版のtensorflowを使うなら"tensorflow-gpu"にインストールのパッケージ名を置換えろ、となっていたので、試しに入れてみることにする。

```
$ conda install tensorflow-gpu
```

で、こちらは残念ながら

```
PackagesNotFoundError: The following packages are not available from current channels:

  - tensorflow-gpu

```

となってしまい自分でコンパイルなりをする必要がある模様(pipで個別にインストールしていっても良いみたい)。こういう時はLinux環境だと面倒がなくていいな、、、と思うけど、勉強程度ならまぁいいかと言うことで暫くはCPUで計算させることにして機会があればGPUでの環境も作ってみることにする。学習自体は別のマシンでやるなりしてもいいしね。

追記その2。
tensorflowの公式ページを見てるとOSXではGPUサポートはされてないみたいですね。色々面倒な感じしかしないので、これは必要性が出てきたらかな、、、mojaveになったらcudaも使えない、という話もあるのでこの辺は下手に追うくらいならLinuxマシンを用意したりTPUを使ったりしたほうが良い気がする、、、。