Ubuntu@macOS上にTensorFlowを導入してみた

# はじめに
機械学習等をしたいなぁっと思って、はや５年近く。
『[Chainer](https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjAiZHFoInYAhVFyLwKHbvWC00QFggoMAA&url=https%3A%2F%2Fchainer.org%2F&usg=AOvVaw1M-tuuJY03Yu9D3yiV23Y5)』を最初の頃は使おうと思っていたのですが、まだ使い始めた頃は発展途中だったり、自身の知識不足でなぁなぁな状態でやめてしまいました。
そんなこんなな時間を過ごしてきて、この前『[TensorFlow User Group](https://tfug-tokyo.connpass.com/)』とGoogleが共催で「[Machine Learning Developer Meetup Tokyo](https://events.withgoogle.com/ml-developer-meetup/)」というのがあり、Googleの[Jeff Dean](https://research.google.com/pubs/jeff.html)やChainerの発展に大きく影響を与えた[秋葉 拓哉(@iwiwi)](https://twitter.com/iwiwi)さん等がスピーカーで、「あぁ、結構面白くなったなぁ」っと思って、プライベートでまた勉強しようかなぁっと思った今日です。はい。

それで、まぁ今回はTensorFlowをmacOSで[Parallels](https://www.parallels.com/)を使ってUbuntuの仮想環境を構築して、[TensorFlow](https://www.tensorflow.org/)を使用できる状態にしたというお話。

まぁ、TensorFlowの公式ドキュメントを読めば分かるので、英語が読める人はそちらを参照してください。
(公式ドキュメント：[https://www.tensorflow.org/install/install_linux#InstallingAnaconda](https://www.tensorflow.org/install/install_linux#InstallingAnaconda))

# 環境

* Anaconda 4.3.30 (Python3.6.3)

# install
はい、今回はAnacondaを使用しています。(Anacondaのインストールは割愛します。)

1. tensorflowという名前のconda環境を作成して、次のコマンドを呼び出してPythonのバージョンを実行します。

```terminal:
$ conda create -n tensorflow python=(ご自身のPythonのバージョン)
```

2. 作成した仮想環境を起動させます。

```terminal:
$ source activate tensorflow
 (tensorflow)$  # Your prompt should change 
```
3. TensorFlowをインストールします

```terminal:
(tensorflow)$ pip install --ignore-installed --upgrade (tfBinaryURL)
```
tfBinaryURLは、PythonのバージョンおよびCPUだけを使うのか、GPUも使うのかで異なります。
tfBinaryURLは、[TensorFlow Python package](https://www.tensorflow.org/install/install_linux#the_url_of_the_tensorflow_python_package)から取得してください。

ちなみに、私はPython3.6でCPUのみだけで動けばいいので次のようにしました。

```terminal:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0-cp36-cp36m-linux_x86_64.whl
```

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



# 実際に動かしてみた
さて、この状態でターミナル上の対話形式で、次のように動かしてみたら次のようになりました。

```python3:
(tensorflow)$ python
Python 3.6.3 |Anaconda, Inc.| xxx
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
/xxx/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6
  return f(*args, **kwds)
>>> 

```
(※「xxx」部分は隠すために使用しているので、実際は違う内容が書かれています。)

まぁ、つまりエラーが出たんです。
そう、実はこれが真の今回の話題だったんです。

# 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6

さて、これに関して実はすぐに検索したら答えが出ました。
参照したのは次のサイトです。

* [RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6 #14273](https://github.com/tensorflow/tensorflow/issues/14273)

まぁ、上記のサイトに行くと「[https://github.com/lakshayg/tensorflow-build](https://github.com/lakshayg/tensorflow-build)」という所に行けって書いてあり、そこではご自身のTensorFlow(TF)のバージョンやOSのバージョン、GCCのバージョン、Pythonのバージョンにあったものを入れてねっというものです。

gccのバージョンは次のコマンドで分かります。
```terminal:
gcc --version
```

ちなみに、私は次のようにしました。

```terminal:
pip install --ignore-installed --upgrade https://github.com/sigilioso/tensorflow-build/raw/master/tensorflow-1.4.0-cp36-cp36m-linux_x86_64.whl
```
これを実行して再度チャレンジすると、

```python3:
(tensorflow)$ python
Python 3.6.3 |Anaconda, Inc.| (xxx) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> 
````

という感じで使えました(ｏ´艸｀ｏ)

これで、TensorFlowが使えるぜ！！！