CentOS7にTensorFlowをインストールする方法

# はじめに
CentOS7にTensorFlowをインストールします。
Pythonの実行環境の作成方法には色々がありますが、どれもPythonに慣れていないと難しく感じてしまいます。
今回はとにかく簡単にインストールして動かせることを目指してこの手順を作成しました。
なお、この手順はCentOS7.2で確認していますが、CentOS6やCentOS7.3以降でも同じ手順でインストールできたと思います。

まず、CentOSに標準で入っているPythonは手を加えないようにしたいので、
Pythonの仮想環境を作成し、そこにTensorFlowをインストールします。

# pyenvのインストール
Pythonの仮想環境を作成するツールであるpyenvをインストールします。
pyenvは下記の公式サイトからダウンロードしてください。
https://github.com/pyenv/pyenv/releases
この手順では当時最新の「pyenv-1.0.8」を使用しています。

ユーザのホームディレクトリにダウンロードしたpyenv-1.0.8.zipを置きます。
zipを展開してリネームします。

```Bash
cd
unzip pyenv-1.0.8.zip
mv pyenv-1.0.8 ~/.pyenv
```

インストールした場所を環境変数に設定します。

```Bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
```

# Anacondaのインストール
PythonとPythonのパッケージ管理ツールであるcondaがセットになったAnacondaをインストールします。
ここでインストールするPythonはあくまでAnaconda用のもので、TensorFlowで使用するPythonはまた後でインストールします。

```Bash
pyenv install anaconda3-4.3.0
pyenv rehash
pyenv global anaconda3-4.3.0
```

Anacondaを環境変数に追加します。

```Bash
echo 'export PATH="$PYENV_ROOT/versions/anaconda3-4.3.0/bin/:$PATH"' >> ~/.bashrc
source ~/.bashrc
```

インストール後の確認として、conda自体をアップデートして、Anacondaが使用するPythonoのバージョンを確認します。

```Bash
conda update conda

python -V
```

今回は、「Python 3.6.0 :: Anaconda 4.3.0 (64-bit)」と表示されました。

# Pythonのインストール
いよいよTensorFlow用のPythonをインストールします。
「tensorflow」はこれから作成するPythonの仮想環境の名前ですので、任意の名前にしてください。
また、今回はPython3.6の環境を作成したいと思います。

```Bash
conda create -n tensorflow python=3.6.0
```

下記が作成した仮想環境に入るコマンドです。
同じPython3.6.0なのでわかりにくいですが、仮想環境に入るとPythonのバージョンが変わります。

```Bash
source activate tensorflow

python -V
```

# TensorFlowのインストール
Python3.6用のTensorFlowをインストールします。
TensorFlowのバージョンは下記の公式サイトで確認してください。
https://www.tensorflow.org/install/install_linux#the_url_of_the_tensorflow_python_package

```Bash
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp36-cp36m-linux_x86_64.whl
pip install --ignore-installed --upgrade $TF_BINARY_URL
```

今回は、「Successfully installed appdirs-1.4.3 numpy-1.12.1 packaging-16.8 protobuf-3.2.0 pyparsing-2.2.0 setuptools-34.3.2 six-1.10.0 tensorflow-1.0.1 wheel-0.29.0」と表示されました。

Pythonコンソールに入って動作確認をしておきます。

```Python
python

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

TensorFlowが見つからない！といったエラーも出ず、「b'Hello, TensorFlow!'」と表示されればOKです。
「Ctrl + d」でPythonのコンソールから抜けます。

以上でTensorFlowのインストールは完了です！
次回ログイン以降も、TensorFlowの実行環境に入りたい場合は、
下記のコマンドで作成した仮想環境に入ります。（名前は環境作成時に命名したものです。）

```Bash
source activate tensorflow
```

TensorFlowの仮想環境から出るコマンドは下記のとおりです。

```Bash
source deactivate
```

# numPy、OpenCV、pillowのインストール
ここからは任意ですが、TensorFlowでCNNなど画像解析系の深層学習を実行したい場合に必要になるOpenCVなどをインストールします。
作成した仮想環境に入り、numPy、OpenCV、pillowを順番にインストールします。

```Bash
source activate tensorflow

conda install -c anaconda numpy=1.12.1
conda install -c menpo opencv3=3.1.0
conda install -c anaconda pillow=4.0.0
```

Pythonコンソールに入って動作確認をしておきます。

```Python
python

import numpy as np
import cv2
from PIL import Image
```

エラーが出なければOKです。
「Ctrl + d」でPythonのコンソールから抜けます。

# おまけ（Python2.7をインストールする方法）
Python2.7もまだまだ現役で使われていますので、上記とは別のバージョンのPythonもインストールしてみましょう。
先ほど作成した3.6のTensorFlowの仮想環境に入っている場合は抜けてください。
「tensorflow2」という名前でPython2.7系の仮想環境を作成します。

```Bash
conda create -n tensorflow2 python=2.7.13
```

仮想環境に入り、Python2.7がインストールできていることを確認します。

```Bash
source activate tensorflow2

python -V
```

それではPython2.7にもTensorFlowをインストールします。

```Bash
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl
pip install --ignore-installed --upgrade $TF_BINARY_URL
```

動作確認をしておきます。

```Python
python

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

以上でPython2.7でのTensorFlowのインストールは完了です！
numPy、OpenCV、pillowのインストールはPython3.6と同じコマンドでインストールできます。