Windows10でPython機械学習の初期構築
(PyCharm+Anaconda+Tensorflow-CPU/GPU)

投稿日:2017/08/18

Environments

クリックで拡大表示されます。

ご挨拶

どうもこんにちは。
こちらの記事はご無沙汰してますねw どのタイミングで更新すればいいのか、いろいろプログラミングの勉強やってて分からなくなってきてますw
今ですね、PaizaやProgateで11の言語を少しずつ勉強してて、さらにデスクトップを購入したので、個人のサーバー構築・機械学習の勉強を本格化していくようになっています。

では本題。
今回は、私の機械学習の勉強において使用する本『 詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~』に従って機械学習の初期構築をすることにしたのですが、どうも、本のやり方のままパッパと構築することができなかったので・・・。
そこで独自に調べ上げて構築できるまでになった方法を掴んだのです。
機械学習の初期構築と言ってもCPUでやるものとGPUまで使ってやるものの2つがありますが、この後述べる途中までの段取りでCPUでの機械学習ができ、最後まで行けばGPUで行うことができるようになりました。
その手順を抜かりなくここに書いていこうと思います。

ちなみに本では最初はGPUまで構築する必要はありませんね。私はせっかくGPUが付いたデスクトップを買ったのだから、宝の持ち腐れしたくない、ということで手っ取り早くGPUを活用させていただくことにしました(^^♪

あくまで私のデスクトップ環境で成功したやり方ですので、ほかのPCではできない部分があったりするかもしれません。そこはご理解お願いします。

環境・最初の準備

●OS:Windows10
●PyCharm: 公式HPよりCommunity版をダウンロード・インストール。
●Anaconda: 公式HPよりPython3.6の64bit版をダウンロード・インストール。
インストールした時点でNumpyなどは入ってますね。Tensorflowなど入っていないパッケージも少なくないですが。
●Gforce1070(8GB)

まずはPyCharmのパス設定。

これは普通にプロジェクトを作成したときの「Interpreter」の項目にインストールしたAnacondaにあるPythonパス《C:\.....\Anaconda3\python.exe》を設定すればいいです。
これでPython3.6としてPyCharmでの、機械学習を除く基本的なPythonプログラミングは可能です。

Anacondaの中にあるモジュール、またはパッケージにはどんなものがあるか、何が不足しているか、ということの確認は、PyCharmからでも、コマンドプロンプトからでも行うことができます。
●PyCharmの場合
メニューバーの左にあるFile→Setting→Project:(プロジェクト名)→Project:Interpreterで確認できます。
また、後で再び説明しますが、Pythonのパスを変更することが可能です。

●コマンドプロンプトの場合
やり方は2つありますが、Anacondaを用いてパス設定を行っている場合は1つ目のやり方でやった方が確実な確認をすることができます。
ちなみにコマンドプロンプトは《スタートメニュー→Windowsシステムツール》または《スタートボタン+r(ファイル名を指定して実行)→「cmd」を入力》で開くことが可能です。
①condaコマンドを使う

C:\>conda list

これでAnacondaの中にどんあモジュール、もといパッケージが入っているのか確認できます。

②pipコマンドを使う

C:\>python -m pip list

こちらでも確認することができますが、Anacondaをインストールしたときのパッケージがズラ~っと並んでいるもののようなので、この後述べる環境構築において確認していくには、1つ目の方法がいいです。
基礎的なPythonプログラミングのみでやっていく人は、2つ目の方法でやっても問題ないとは思います。

Tensorflow(CPU版)インストール

記事投稿した時点でのTensorflowのバージョンでは、Python3.6に対応したものはありません。なので、Tensorflowが対応しているPython3.5以下のバージョンを持った環境を構築しなくてはなりません。
しかし、せっかくPython3.6を入れたのに、これでは面倒ですね。
ここで活躍するのがAnacondaの「仮想環境」です。つまり、先ほど入れたPython3.6はデスクトップの基盤で動いてもらうことにして、それとは別の、仮想の環境を構築してそこにおけるバージョンを3.5以下に設定すればよいのです。
その方法を説明し、続けてTensorflow(CPU)のインストール方法も説明していきます。

まず仮想環境を構築するために、管理者権限でコマンドプロンプトを起動し、以下のコマンドを入力します。
ちなみに、管理者権限でコマンドプロンプトを起動させるには、《スタートメニュー→Windowsシステムツール》にあるコマンドプロンプトを 右クリックして管理者権限で起動してください。(仮想環境絡みでは毎回管理者権限でやった方がいいです。)

C:\>conda create --name=(仮想環境の名前) python=(Pythonのバージョン)

上のコマンドのPythonのバージョンに「3.5」と入力すれば、Python3.5の仮想環境が構築されます。
ちなみに仮想環境は《C:\...\Anaconda3\envs\(仮想環境の名前)》という感じのディレクトリで存在しています。仮想環境内のPythonのバージョンに合わせたパスもこの中にあります。

ここで、仮想環境内でなんらかの処理を行う場合に、仮想環境の起動をしなくてはなりません。つまり仮想環境のON/OFFのやり方を以下に述べます。
仮想環境をONにする場合は・・・

C:\>activate (仮想環境の名前) (仮想環境の名前)C:\>

仮想環境がONになると、上のコマンドの2行目のようにディスク名(上のコマンドの場合「C:\>」)の前に仮想環境の名前が表示されます。
逆に、OFFにするには・・・

(仮想環境の名前)C:\>deactivate C:\>

「deactivate」だけ入力すればいいですね。

仮想環境の構築が終わったら、Tensorflow(CPU版)をインストールしていきます。
インストールする前に必ず「activate」して仮想環境をONにしてください。その状態のままコマンドを書いてインストールしていきます。

(仮想環境の名前)C:\>pip install tensorflow

これでTensorflow(CPU版)をインストールできました。
ここで動作確認をしてみます。こちらもPyCharmとコマンドプロンプトの2通りやり方があります。
●PyCharmの場合
こちらの方法でやる場合、必ずしも 仮想環境を「activate」してONする必要はありません。
まずプロジェクトを新しく作成する際に、Interpreterの項目で新しいPython3.5のパスを追加します。
Interpreterの右にある歯車をクリックして「Add Local」を選択し、先ほど構築した仮想環境があるディレクトリにあるPythonのパス《...\Anaconda3\env\(仮想環境の名前)\python.exe》を選択して、これで仮想環境のPython3.5のパスが設定されました。

元々Python3.6で作成されたプロジェクトでも、先ほどPyCharmのパス設定で、パッケージの確認として補足説明した、《File→Setting→...》のやり方でInterpreterを変更することが可能です。

では、作成したプロジェクトに以下のPythonコードを書いていきましょう。

import tensorflow as tf sess=tf.Session() hello=tf.constant("Hello,Tensorflow!") print(sess.run(hello)) a=tf.constant(10) b=tf.constant(32) print(sess.run(a+b))
b'Hello,Tensorflow! 42

これがうまく実行されれば、「b'Hello,Tensorflow!」と「42」が2行で出力されるはずです。
出力の最初の「b'」はよく分らんですが無視していいです。

●コマンドプロンプトの場合
こちらの方法でやる場合は 必ず「activate」して仮想環境をONにしてください。

(仮想環境の名前)C:\>python ...(環境かなんらかの説明が数行出てくる。) >>>#ここからPythonのコードを書いていく。 >>>import tensorflow >>>sess=tf.Session() >>>hello=tf.constant("Hello,Tensorflow!") >>>print(sess.run(hello)) >>>a=tf.constant(10) >>>b=tf.constant(32) >>>print(sess.run(a+b))
b'Hello,Tensorflow! 42

コマンドプロンプトで直接Pythonを書くと、上の実行結果が出力されるはずです。


①における仮想環境の生成ですが、別の方法として参考[2]や下の ※※に記述した方法もありましたので、(私は参考[1]のみしかやっていませんが)やりやすい方をやってみてください。

【参考】
[1] WindowsのAnaconda環境の真相学習フレームワークTensorflow1.0をインストールする方法 | Qiita
[2] Windows版AnacondaでTensorflow環境構築 | Qiita

※※仮想環境の構築(PyCharmで)
新しくプロジェクトを作成する際のInterpreterの右の歯車で「Create Conda Env」を選択し、「Name」に仮想環境の名前、「Location」は《...\Anaconda3\env》以下にあるかを確認し、「Python version」でバージョンを選択すれば仮想環境が構築される・・・ようです(私はやってないですが、これでもいけそうですね)。
※※

ついでにKerasも。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~』に従って勉強していくには、Kerasのインストールも必要になっているので、ついでにこちらもインストールします。

まぁ、このままTensorflowと同じようにインストールすればいいでしょ!っと・・

(仮想環境の名前)C:\>pip install keras
エラーエラーエラーエラーエラーエラーエラーエラーエラーエラー(※実際はこんなエラー表示は出てきません。分かりやすいように書いているだけ。)

上のコマンドを実行したところ・・・エラーが!!!
なにぃ!?これは由々しき事態・・・(大げさ)
エラー文を読んでみると、「Scipyがインストールされていない」とのことでした。
めんどくせぇなぁ、でも先にScipyをインストールすればなんとかなるっしょっと・・・

(仮想環境の名前)C:\>pip install scipy
エラーエラーエラーエラーエラーエラーエラーエラーエラーエラー

どうしたことだ。またしてもエラー。今度はインストールすら叶わない!?
こうなってしまっては別のインストール方法を探るしかありません。うまくいった方法を説明していきます。

まず、 Scipyのページに行きます。
そこで「scipy‑0.19.1‑cp35‑cp35m‑win_amd64.whl」をインストールします。
バージョン間違えないでね!?Tensorflowのための仮想環境、つまりPython3.5に対応させるので「35」のものを選んでください。
そしてコマンドプロンプトを起動して仮想環境を起動し、以下のコマンドを入力します。

(仮想環境の名前)C:\>pip install ...(Scipyのダウンロード先まで辿る)\scipy‑0.19.1‑cp35‑cp35m‑win_amd64.whl

ぜぇ、はぁ、やっとインストールできた。
再度Kerasのインストールに挑戦します。やり方は最初のと同じで良いです。

続いて、Kerasがちゃんとインストールされているか、またKerasの動作する背後環境がTensorflowに設定されているかを確認してみましょう。
PyCharmを起動、またはコマンドプロンプトでPythonを起動して・・・

>>>import keras
Using TensorFlow backend.

上のPythonコードを書いて実行すると、上の実行結果が出てくるはずです。今回私の場合、「Tensorflowが背景で動いていますよ」と出ていましたので、これでKerasは正確に動作していると判断し、ここでのインストール作業を終了することにしました。

ただ、場合によっては、「Using Theano backend.」といった結果が出てしまうこともあるようなので、『詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~』に記載されていたやり方を書いていきます。参考にしてください。
まず《C:\User\(ユーザー名)\.keras\keras.json》をメモ帳で開きます。
次に、その中におそらく「"backend":"theano"」と書かれている行があると思うので、この「theano」を「tensorflow」に書き換え保存します。
最後にもう一度Pythonで先ほどの「import keras」を実行して確認してみてください。

これでKerasインストールできたぁ~( ;∀;)
ここまでの手順で、CPUでの機械学習の勉強、あの本でやっていく場合の最低限の環境が整ったことになります。

【参考】
[3] windows10にTensorflow+Kerasの環境を構築する。 | TOMMY NOTES

cuDNNSitePage

【図1】
クリックで拡大表示されます。

次にTensorflow+GPUの環境構築

さて、ここからGPUでのPython機械学習の環境を構築していきます。GPUで機械学習する方にはここからが本題なんではないでしょうか?
・・・といっても、私自身、勉強を始めたばかりで、GPUに関しては超の付くド素人です。
そのため、GPUを操作するプログラミングといった深いところまでは触れません。
Tensorflow+GPU機械学習に必要なものをダウンロード・インストールし、セットアップするだけの簡単なやり方を今回はやっていきます。
後々、分かるようになったらまた記事にする・・・・かもしれません。
また、よく分からない問題に直面してしまい、なんとか回避して使える程度にはしましたが、 最新バージョンのパッケージで使っていないという結果になっていることをご理解ください。この辺に関して何かアドバイスがありましたらご助言していただきたく思います。

Tensorflow+GPU環境の構築に必要な段階は3つあります。まずCUDA、次にcuDNN、最後にtensorflow-gpuです。
ダウンロードするバージョンとしては、CUDA8(正確にはCUDA Toolkit)、cuDNN7ですね。tensorflow-gpuのインストールの段階で問題が生じるのですが、後で述べていきます。
まずCUDAをインストールします。
CUDA Toolkitのダウンロードページに飛びます。ログインしてなくてもダウンロードできますよ。
《OS選択→32/64bitの選択(Windowsでは64bit版しかなかった)→OSバージョンの選択→インストーラのタイプ選択(私はローカルインストーラを選びました。)》という流れでプラットフォームを選んでいき、BasicInstallerをダウンロードします。
ダウンロードしたらインストールします。途中「インストール オプション」が出てきますが、私は《高速》で行いました(カスタム選択で、過去verではVisualStudioも入っていたらしいが、CUDA8には無かった・・・?)。
インストールが済んだら、動作確認のためにコマンドプロンプトを起動して(仮想環境の起動はどっちでもいいかな?)、以下のコマンドを入力。

C:\>nvcc
...(なんか書いてる) nvcc fatal :No input files specified; use option --help for more information

上の実行結果の1行目は無視して、2行目が出てきたらとりあえずインストールは成功したと思っていいと思います。

次はcuDNNをインストールします。
cuDNNのページに飛び・・・ちょっと手間ですがこれをダウンロードするには会員登録をしなくてはなりません。
ので、会員登録します。名前、メアド、・・・分野と組織名が必須回答になっているのは、学生の身としては嫌ですねぇ( ゚Д゚)
適当に入力していいですよ、そこは。「Other:Programming」とか「None」、「Individual」とか。
そしてインストール画面に移るわけですが、【図1】のように、展開していくとズラ~と表示されます。今回は最新バージョンである《for CUDA8.0→cuDNN v7.0 Library for Windows10》を選択してダウンロードします。①でインストールしたCUDAのバージョンに合わせてくださいね。
cuDNNはzip形式になっているので、ダウンロード先で展開し、展開した中身のbin・include・libフォルダをコピーし、CUDAのデフォルトディレクトリ《C:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v8.0》にペーストします。
これで、とりあえずのTensorflowに対応したGPU環境が出来上がった段階になると思います。

最後にtensorflow-gpuをインストールします。
インストールする前に先に入れてあるTensorflow(CPU版)をアンインストールします。
コマンドプロンプト・仮想環境を起動して・・・

(仮想環境の名前)C:\>pip uninstall tensorflow

これでアンインストールが済みました。
さてさて、Tensorflow(CPU版)と同じようにGPU版をpipでインストールすればいいでしょ~!

(仮想環境の名前)C:\>pip install tensorflow-gpu

インストールできた!Tensorflow(CPU版)もTensorBoardもセットでインストールされてる!イイネ!
じゃ、TensorflowがGPUで動くか動作確認しましょうか。CPUの時と同じPythonコードを実行すれば良いです。
・・・・・・・問題発生。(※環境によってはここで成功して完了するのかな???)
問題①
アレ? エラー?
馬鹿な・・・・「モジュールが見つかりません」だと?
ついさっき入れたはずだぞ・・・・( ゚Д゚)

問題②
実行結果は表示されるが、GPU処理ではなくCPU処理でなされている・・・(;´・ω・)
GPUで処理された場合の実行結果は以下のようになるはずです。

...(何行かにわたってなんか書かれてる) name:(GPUの名前) major: ... pcBusID ... Total memory: ... Free memory: ... ...(何行かにわたってなんか書かれてる) b'Hello,Tensorflow! 42

上のように、GPUをどうのこうのして、使われているGPUの説明が表示されてから、実行結果が表示されるはずです・・・・が。
これが無くて実行結果のみが表示された場合はCPUでの処理がなされていると考えられます。
これでは意味がない。

私の場合、この2つの両方に直面してしまいました。なんなんだ・・・(´・ω・`)
こうなっってしまっては別の方法でインストールし直すしかありません。
先ほど入れたtensorflow-gpuをアンインストールして・・・

(仮想環境の名前)C:\>pip uninstall tensorflow-gpu

tensorflow-gpuの配布サイトにアクセスして、そのファイルのダウンロード・インストールをいっぺんにする方法をしてみます。
コマンドプロンプト・仮想環境を起動して以下を入力。

(仮想環境の名前)C:\>pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.3.0rc2-cp35-cp35m-win_amd64.whl

インストールが済んだらもう一度動作確認を・・・
・・・・・・・またまた問題発生。
今度は「モジュールが見つかりません」だってぇ~!?
なんやねん!:;(∩´﹏`∩);:

気を取り直して、また別の方法でtensorflow-gpuをインストールします。もう、これが最後の綱でした。
Anacondaのcondaコマンドでインストールするのです。
先ほど入れたtensorflow-gpuをアンインストールして、以下のコマンドを入力。

(仮想環境の名前)C:\>conda install tensorflow-gpu

これをすると、Anacondaに入っている過去バージョンのtensorflow-gpuと同時に、過去バージョンのnumpyやzlib、protobufなどが入ってきます。つまり2つのバージョンのにパッケージを抱えないといけないことになります。
だって、最新バージョンのnumpyをアンインストールしたらtensorflow-gpu動いてくれないし、一方tensorflow-gpuと一緒に入ってきた旧numpyをアンインストールしようとするとtensorflow-gpuまで道連れにするんだもん・・・意味わかんねぇ(;_;)

何はともあれ、過去バージョンではありますが、これで動作確認で先ほどのGPUの出力は得られました。

Anacondaさえ各パッケージの最新バージョンに食らいついてくれればそれぞれの最新バージョンを使えたと思うのですが・・・まぁ動くだけ良しとしましょうか。

CUDAプログラミングは、CUDA8が対応するVisualStudio2015でできるようですが、私の場合、VS2017をインストール済みな上に、なぜかMicrosoftログインしてもダウンロードできない、ということでしたので断念・・・次のバージョンを待つことにします。はよVS2017に対応して?(´・ω・`)メンドイナァ・・・

【参考】
[4] [TensorFlow]TensorFlow on Windows GPU版のインストール方法 | Effectiveさお
[5] CUDA7.5をWindows10にインストールし、Sampleコードをじっこうするまで
[6] Windows版TensorFlow+CUDA+cuDNNでGPUを使用してみたら思ったより速度が出なかった | scriptlife 千夜一夜 プログラミング別館
[7] CUDA-インストール(Windows編) | Chikuma Engineering

☆その他のメモ☆

●Interpreterを設定したのに「モジュールが無い」とエラーが出る。
まず考えられるのは、PyCharmで《File→Default Setting→Project Interpreter》を選択した際のProject Interpreterの項目にPythonのパスが適用されていないことです。この場合、パスを選択して「Apply」してください。
それでもエラーが出る場合はそのパッケージをインストールした方法に問題があると思われるので、別の方法を調べてください。

●コマンドプロンプトでディスクの切り替えをしたい。

C:\>D:
D:\>

例えばディスクCからディスクDに切り替えをしたい場合、上のコマンドのように書けば、2行目の切り替わった結果が出ます。

●condaで特定のパッケージをアンインストールをしたい。

C:\>conda uninstall (パッケージ名)

アンインストールするには、上のコマンドのようにuninstallコマンドを使えばよいです。ただし、仮想環境を起動しているか否かで削除するパッケージの場所が違うことに注意して、仮想環境の起動を忘れないように!

●Anacondaに入っているパッケージをすべてアップデートしたい。

C:\>conda update --all

こちらも仮想環境の起動の必要があるか注意!

●pipで最新バージョンのインストールをしたい。

C:\>pip install -U (パッケージ名)

こちらも仮想環境の起動の必要があるか注意!

まとめ

いやぁ~・・・
抜かりなく書いたら長くなってしまった オツカレ( ^^)_旦~

勉強を進めるにおいて、念のためpipでほかにもscikit-learnやmatplotlibをインストールしておくといいですね!
Pythonの環境構築として、pipオンリーでやったり、なにやらpyenvというものがあったりでいろいろ惑わされてしまうところがありましたが、私はAnacondaがある限りはこのやり方でやっていけるかなと考えています。

私としては抜かりなく書いたつもりですが、どこか抜けてたりしないかな・・・?
抜けたところがあったり、この手順において何か質問がありましたら、回答できる範囲で TwitterよりDM質問受け付けます。
また、GPU構築における問題に関してもご助言できる方がいらっしゃれば、よろしくお願いします。

タグ:

Comment

コメントはありません。
There's no comment.