#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)オプションを付けると,うまくいくことが多かった。