Windows
Anaconda
Keras
TensorFlow
Python3.5

Windows10でAnacondaによりTensorFlowとKerasを動かす

More than 1 year has passed since last update.

Windows10でAnacondaによりTensorFlowとKerasの環境を構築する

巣籠悠輔著「詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~」のサンプルプログラムを以下の環境で実行しようとした所,Numpy+MKLパッケージとSciPyパッケージとMatplotlibパッケージがうまく共存せず,非常に戸惑ったので成功例を示します。

  • Windows 10 64bit
  • Anaconda 4.4.0 Python 3.6 version

サンプルプログラム : https://github.com/yusugomori/deeplearning-tensorflow-keras
Windows用バイナリーのダウンロード : http://www.lfd.uci.edu/~gohlke/pythonlibs

TensorFlowのインストール

TensorFlowのインストールは,公式ページ通りに行った。
Installing with Anaconda : https://www.tensorflow.org/install/install_windows

conda create -n py35 python=3.5 
activate tensorflow
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.3.0-cp35-cp35m-win_amd64.whl

NumPy+MKL, SciPy, Matplotlibのインストール

SciPyとMatplotlibはNumPy+MKLに依存している。
"numpy-1.13.1+mkl-cp35-cp35m-win_amd64.whl"をダウンロードして,インストールした。

pip install numpy-1.13.1+mkl-cp35-cp35m-win_amd64.whl

Kerasをインストールする時にSciPyパッケージのインストールでエラーが出たので,Kerasをインストールする前に"scipy‑0.19.1‑cp35‑cp35m‑win_amd64.whl"をダウンロードして,インストールした。

pip install scipy-0.19.1-cp35-cp35m-win_amd64.whl

"matplotlib-2.0.2-cp35-cp35m-win_amd64.whl"をダウンロードして,インストールした。

pip install matplotlib-2.0.2-cp35-cp35m-win_amd64.whl

これでSciPyとMatplotlibをimport出来るようになったが,後にscikit-learnをインストールすると,

"C:\Users\User\AppData\Local\conda\conda\envs\py35\Lib\site-packages\numpy\_distributor_init.py"

が原因でscipyをimportが出来なくなるので,このファイルをコピーしておく。

scikit-learnのインストール

pip install scikit-learn

scikit-learnをインストールしたら,
scipyをimportしようとすると,再びエラーが出るようになった。"from numpy._distributor_init import NUMPY_MKL # requires numpy+mkl"とエラーが出ていたので。

"C:\Users\User\AppData\Local\conda\conda\envs\py35\Lib\site-packages\numpy\_distributor_init.py"

をSciPyをimport出来ていた時にコピーした同名ファイルに置き換えた。これで,TensorFlowによるサンプルプログラムを実行することが出来た。

※ここで,ファイルを置換するのではなく,"numpy-1.13.1+mkl-cp35-cp35m-win_amd64.whl"により,NumPy+MKLを再インストールしてしまうと,次はMatplotlibをimportしようとすると,Windowsで"プロシージャ エントリ ポイント mkl_aa_fw_init_workdivision がダイナミック リンク ライブラリC:\Users\User\AppData\Local\conda\conda\envs\py35\Library\bin\mkl_intel_thread.dllから見つかりませんでした。"と警告が出て,Pythonで"Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll."とエラーが出た。

Kerasのインストール

pip install keras

これでKerasによるサンプルプログラムも実行出来たので,おそらく正常に環境構築が出来た。

エラーの原因は何だったのか?

Matplotlibと一緒にインストールされるNumPyでは、NumPy+MKLをうまく初期化出来ないようだった。パッケージをインストールする順番を変えると,また色々変わってくるかもしれない。

Anacondaにはpip installとconda installがあり,どちらを使えば上手くいくのか分からない時があった。
pip installを使うときは,--ignore-installed(-I)オプションを付けると,うまくいくことが多かった。