はじめに
今までディープラーニングのフレームワークとしては、chainerをubuntu上で使ってきましたが
ubuntuとwindows10のデュアルブートはwindows10がアップデートするとブートが壊れてubuntuにログインできなくなったりといろいろ不安定でした。
そしてgoogleの深層学習フレームワークであるtensorflow + それを便利に利用できるフレームワークとしてのKerasがwindows10で利用できるということでちょっと試してみようと思います。
windows10にtensorflowにインストール
Tensorflowの公式によるとwindowsにtensorflowを入れる場合はanacondaを使った方法とネイティブのpipによる方法があるよということです。
anacondaはいろいろ便利なのですが、公式にwindowsは対応していないそうなので今回はネイティブのpythonを使用します。
python3.5.xのインストール
python.argからpython3.5.xをインストールします。tensorflowは3.5系しか現在動かないそうなのでそれ以外はインストールしないでください。
インストールするときは、以下の画像のように
pipをインストールすると、環境変数に加えるにチェックを入れてください。
CUDA & cuDNN のインストール
グラボを使わない人は飛ばしてください。
CUDAの開発者用サイトからCUDAをインストールします。
これはsetupファイルなので起動するだけでインストールできます。
次にcuDNNですが、これはユーザー登録などが必要で、すこし面倒です。
NvidiaのDeveloperサイトからインストールします。
「Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0」を選んでください。
v6.0は現在うまくいかないそうです。
ダウンロードしたcuDNNの中身は
cuda/
bin/cudnn64_5.dll
include/cudnn.h
lib/x64/cudnn.lib
という構成になっているので、これを対応した場所へ移動させます。
cudaをインストールすると
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
以下にcudaの色々なものが展開されているのですが、そこにbin,include,libがそれぞれあるので同じものは同じとこに置いてあげます。
例えば
cudnn.hはC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include\に移動させるという要領です。
cuDNNのインストールはこれで終わりです。
tensorflowのインストール
$ pip3 install --upgrade tensorflow-gpu # グラボを使わない人は最後の-gpuをつけない。
だけです。
以下で確認してください。
$ python >>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() 2017-05-29 08:22:31.565875: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU comput 2017-05-29 08:22:31.566698: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU compu 2017-05-29 08:22:31.566922: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU compu 2017-05-29 08:22:31.567172: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU com 2017-05-29 08:22:31.567408: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU com 2017-05-29 08:22:31.567644: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU comput 2017-05-29 08:22:31.567889: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU compu 2017-05-29 08:22:31.568106: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cp w library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU comput 2017-05-29 08:22:31.930970: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runt ice 0 with properties: name: GeForce GTX 1050 Ti major: 6 minor: 1 memoryClockRate (GHz) 1.392 pciBusID 0000:01:00.0 Total memory: 4.00GiB Free memory: 3.33GiB 2017-05-29 08:22:31.931096: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runt 2017-05-29 08:22:31.931653: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runt 2017-05-29 08:22:31.932152: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runt TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1050 Ti, pci bus id: 0000:01:00.0) >>> print(sess.run(hello)) b'Hello, TensorFlow!' >>>
sessionを開始すると色々なんか出てきますが、最後の方にGeForce GTX 1050 Tiとグラボがちゃんと認識されていることがわかります。
tensorflowのインストールはこれで終わりです。
Keras のインストール
$ pip install keras ごちゃごちゃエラー
エラーがでたscipyが入れられないとのこと。
python packages #scipyから
「scipy‑0.19.0‑cp35‑cp35m‑win_amd64.whl」をダウンロードする。
numpyもpython packages #numpyから「numpy‑1.12.1+mkl‑cp35‑cp35m‑win_amd64.whl」をダウンロードします。これは通常のインストールのもの+mklというものが入っていますが、たまに必要になるので。
$ cd .\Downloads\ $ pip install .\scipy-0.19.0-cp35-cp35m-win_amd64.whl ... Successfully installed scipy-0.19.0 $ pip install .\numpy‑1.12.1+mkl‑cp35‑cp35m‑win_amd64.whl ... Successfully installed numpy-1.12.1+mkl
とscipyとnumpy+mklをインストールできたので、今度こそkerasをインストールする。
$ pip install keras ... Successfully installed keras-2.0.4 theano-0.9.0 PS C:\Users\username> python Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import keras Using TensorFlow backend. >>>
とうまくいきました。
今度実際にkerasを使ってみようと思います。
以下は参考程度に。
Anacondaでtensorflowをインストールする
一応こっちも試してみたので、書いておきます。
こっちのほうがずっと大変だったので、上の方法をおすすめします。
anacondaのインストール
anacondaのページからダウンロードします。
2017/05/28現在はpython3.6のようです。ちなみにwindows版のtensorflowのサポートはpython3.5.xのみ対応となっています。
インストールはセットアップファイルをダウンロードしてきて起動するだけです。
tensorflowのインストール
基本的にtensorflowのページの通りに行います。
まずはcondaでtensorflowの環境を作ります。
この時、python3.5.xにしないとtensorflowが動かないので指定してあげます。
PS C:\Users\username> conda create -n tensorflow python=3.5.2 Fetching package metadata ........... Solving package specifications: . Package plan for installation in environment C:\Users\username\Anaconda3\envs\tensorflow: The following NEW packages will be INSTALLED: pip: 9.0.1-py35_1 python: 3.5.2-0 setuptools: 27.2.0-py35_1 vs2015_runtime: 14.0.25123-0 wheel: 0.29.0-py35_0 Proceed ([y]/n)? y python-3.5.2-0 100% |###############################| Time: 0:00:00 40.05 MB/s setuptools-27. 100% |###############################| Time: 0:00:00 49.94 MB/s wheel-0.29.0-p 100% |###############################| Time: 0:00:00 8.05 MB/s pip-9.0.1-py35 100% |###############################| Time: 0:00:00 38.04 MB/s # # To activate this environment, use: # > activate tensorflow # # To deactivate this environment, use: # > deactivate tensorflow # # * for power-users using bash, you must source #
しかし、このときwindowsPowerShellを利用しているとactivateできない問題が出てくるので(コマンドプロンプトを使っているひとは多分大丈夫)、パッチファイルをこのページからダウンロードして適当に展開しておきます。そして、以下のようにanacondaのScripts以下に置きます。
cp .\activate.ps1 C:\Users\username\Anaconda3\Scripts\ cp .\deactivate.ps1 C:\Users\username\Anaconda3\Scripts\
これでactivateできるようになりますが、ps1ファイルを実行できない場合は管理者権限でwindowsPowerShellを開いて以下を実行してください
Set-ExecutionPolicy Unrestricted
作ったらアクティベイトしてそこにtensorflowをインストールします。
GPU:(tensorflow)C:> pip install –ignore-installed –upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-win_amd64.whl
CPU:(tensorflow)C:> pip install –ignore-installed –upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl
[tensorflow] PS C:\Users\username> pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windo ws/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl Collecting tensorflow==1.1.0 from https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_ amd64.whl Downloading https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl (19.4MB) 100% |################################| 19.4MB 78kB/s Collecting protobuf>=3.2.0 (from tensorflow==1.1.0) Downloading protobuf-3.3.0.tar.gz (271kB) 100% |################################| 276kB 3.3MB/s Collecting six>=1.10.0 (from tensorflow==1.1.0) Downloading six-1.10.0-py2.py3-none-any.whl Collecting numpy>=1.11.0 (from tensorflow==1.1.0) Downloading numpy-1.12.1-cp35-none-win_amd64.whl (7.7MB) 100% |################################| 7.7MB 198kB/s Collecting werkzeug>=0.11.10 (from tensorflow==1.1.0) Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB) 100% |################################| 317kB 3.3MB/s Collecting wheel>=0.26 (from tensorflow==1.1.0) Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB) 100% |################################| 71kB 4.6MB/s Collecting setuptools (from protobuf>=3.2.0->tensorflow==1.1.0) Downloading setuptools-35.0.2-py2.py3-none-any.whl (390kB) 100% |################################| 399kB 3.3MB/s Collecting packaging>=16.8 (from setuptools->protobuf>=3.2.0->tensorflow==1.1.0) Downloading packaging-16.8-py2.py3-none-any.whl Collecting appdirs>=1.4.0 (from setuptools->protobuf>=3.2.0->tensorflow==1.1.0) Downloading appdirs-1.4.3-py2.py3-none-any.whl Collecting pyparsing (from packaging>=16.8->setuptools->protobuf>=3.2.0->tensorflow==1.1.0) Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB) 100% |################################| 61kB 3.9MB/s Building wheels for collected packages: protobuf Running setup.py bdist_wheel for protobuf ... done Stored in directory: C:\Users\username\AppData\Local\pip\Cache\wheels\1b\42\a0\4c7343df5b629ec9c75655468dce7652b28026896b0209ba55 Successfully built protobuf Installing collected packages: six, pyparsing, packaging, appdirs, setuptools, protobuf, numpy, werkzeug, wheel, tensorflow Successfully installed appdirs-1.4.3 numpy-1.12.1 packaging-16.8 protobuf-3.3.0 pyparsing-2.2.0 setuptools-35.0.2 six-1.10.0 tensorflow-1.1.0 werkzeug-0.12. 2 wheel-0.29.0 [tensorflow] PS C:\Users\username>
インストールできたら以下を実行してみます。
[tensorflow] PS C:\Users\xaver> python Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow >>> hello = tf.constant('Hello, TensorFlow!') Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'tf' is not defined >>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() 2017-05-28 20:55:26.429742: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your m achine and could speed up CPU computations. 2017-05-28 20:55:26.430980: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-28 20:55:26.431309: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-28 20:55:26.432157: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on you r machine and could speed up CPU computations. 2017-05-28 20:55:26.432418: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on you r machine and could speed up CPU computations. 2017-05-28 20:55:26.432880: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your m achine and could speed up CPU computations. 2017-05-28 20:55:26.433170: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-28 20:55:26.433422: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cp u_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your m achine and could speed up CPU computations. >>> print(sess.run(hello)) b'Hello, TensorFlow!' >>>