TensorFlow GPU版をWindows 10にインストール

Window 10にTensorFlowをインストールして使っていたのだが、PyTorchで遊ぶ環境を作っていたら、 (たぶんPython 3.6にしたことが原因だけど)いつの間にかTensorFlowが動かなくなっていたので、再インストールした。 ここに、その手順を備忘録として残しておく。

なお、環境は次の通り。

1. Anaconda3-4.4.0 をインストール

Anacondaのアーカイブ にアクセスして、Anaconda3-4.4.0-Windows-x86_64.exe をダウンロード&インストール。

2. Python3.5 をインストール

Anaconda3-4.4.0により、Python 3.6がインストールされるが、Window 10では、Python 3.6とTensorFlowの相性が良くないらしい。 そのため、Python 3.5 をcondaでインストール。

> conda install python==3.5

3. TensorFlow 1.5をインストール

Build from source on Windowsによると、 CUDA 9とcuDNN 7の組合せの場合、TensorFlow GPU版はv1.5~1.12が使えるとある。 こちらを参考にCUDAとcuDNNのバージョンを確認したところ、 CUDA 9.0cuDNN 7.0.5だった。この組合せの場合は、tensorflow_gpu-1.5.0が無難そうである。 なので、pipでtensorflow_gpu-1.5.0をインストールする。 なお、condaを使うと必ずエラーになるという罠に何度もかかったので注意。pipを使う。

> pip install tensorflow-gpu==1.5

しかし、以下のようなエラーが出る場合がある。

...
AttributeError: '_NamespacePath' object has no attribute 'sort'

これはpipがエラーの原因なので、easy_installpipをインストールし直す。 pipが壊れたのは、condaでPython 3.5にしたのが原因と思われる。やはりconda、良さそうに見えて罠が多い。

> easy_install pip

これでpipが使えるようになったので、再度pipでtensorflow_gpu-1.5.0をインストールする。

> pip install tensorflow-gpu==1.5

次のようにDEPRECATIONが出るが、とりあえずOK。

...
`DEPRECATION: Uninstalling a distutils installed project (html5lib) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.`
...

4. Numpy 1.14をインストール

Pythonを起動して、TensorFlowimportすると、またしてもエラーが出る。

>>> import tensorflow as tf
...
ImportError: cannot import name 'multiarray'

これはnumpyのエラーなのだが、こちらのIssueによると、 TensorFlow 1.6以上は、numpy 1.13.3以上である必要がある、とのこと。 TensorFlow 1.5だが、とりあえずcondanumpy 1.14を入れてみる。

> conda install numpy==1.14

これでOKのはず。

5. TensorFlowの動作確認

最終的には以下のように、これまでインストールしてきたモノとバージョンが確認できればOK。

> python
Python 3.5.0 |Anaconda 4.4.0 (64-bit)| (default, Dec  1 2015, 11:46:22) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.5.0'
>>>

参考文献