概要
Windows上にディープラーニング環境を構築する際、ネット上の情報を組み合わせる必要があったので、ここにまとめておく
環境
・OS:Windows7 64bit
・言語:Python
・Python環境:Anaconda、Spyder
・ディープラーニング環境:Tensorflow, Keras
AnacondaはPythonを使う上で便利ものをパッケージとしてダウンロードできるくらいに覚えてる。
SpyderはAnacondaをインストールすると一緒についてくるPythonのエディタ(Visual StudioやXcode、Eclipseみたいなもの)
TensorflowはGoogleが提供しているPython上で動くディープラーニング環境で、Kerasはそれを便利に使えるようにするライブラリ群みたいなもの。終盤で紹介する。
Anacondaのインストール
2017/5/6現在、TensorflowはPython3.5にしか対応していない。Anaconda4.3はPython3.6をインストールしてしまうので、敢えてAnaconda4.2をインストールする必要がある。
以下のリンク、もしくは「Anaconda old archives」とかで調べて出てきたページから、Anaconda3-4.2.0-Windows-x86_64.exeをダウンロードする。(Anaconda2ではないので注意)
https://repo.continuum.io/archive/
ダウンロードしたexeをダブルクリックするとインストールが始まる。基本的には「I agree」もしくは「Next」を押していけば問題ないが、以下に少し注意を記載しておく。
AnacondaのDestination Folderは日本語を含まないパス以下に置くのがベター。試しに日本語のフォルダ下に作成したら、Spyderが動作しなかった。
Python3.5であることを確かめる。
インストールが終了すると、Anaconda Cloud、Anaconda Navigator、Anaconda Prompt、Spyderなどがインストールされる。筆者はAnaconda PromptとSpyderしか使っていない。
Spyderの起動
インストールされたSpyderを起動すると、以下のような画面になる。左側のエディタにPythonコードを書いて「F5」で実行すると、Pythonが実行される。実行結果は右下のコンソールに出力される。
右下のコンソールに直接コードを打ち込んでも実行は可能。
Tensorflowのインストール
TensorflowをPythonコードで使用するには、Spyderのエディタに以下のようにimport文を書く。
import tensorflow as tf
もちろんだが、これはtensorflowがインストールされていないと実行エラーとなる。そのため、Anaconda promptを使って、tensorflowをインストールする。
Anaconda Promptを起動する。(ユーザ名は隠してます)
pip install tensorflow
を入力する。
(GPUでtensorflowを動かしたい場合は後述のメモを参照)
こんな感じでインストールが進む
最後にSuccessfully installedというメッセージが出てきたらインストール成功。Anaconda Promptは閉じて良い。
GPUでtensorflowを動かす場合(メモ)
もし、GPUでtensorflowを動かしたいのであれば、Anaconda Promptにて、
pip install tensorflow-gpu
と入力するが、GPUでtensorflowを動かすには、GPUのバージョンがあったり、CUDAやCuDNNをインストールしたりして結構大変。
CUDAのインストールは以下が参考になる。
http://qiita.com/binzume/items/7a0170fe834e250ddef9
筆者はGPU環境の構築も行ったが、CUDAのインストール時に警告が出て(警告の内容は忘れてしまった。たしか、ドライバのバージョンがなんたらかんたら)、結構躓いた。メモ程度にしか書かないが、GPUドライバがCUDAにも含まれていて、現在インストールのドライバよりCUDAのドライバが古いからやべーよって事だったと思う。CUDAのインストールを進めていくと、ドライバのインストールが選択できるから、そのチェックをはずせばインストールできた。
Tensorflowを動かしてみる。
TensorflowのチュートリアルとしてMNISTが有名だが、画像認識などをやったことがない人にはハードルが高いと思う。
以下のサイトなどは回帰をtensorflowでやっているので、おすすめ。
http://qiita.com/TomokIshii/items/f355d8e87d23ee8e0c7a
(以下上記のサイトより引用)
import numpy as np
import tensorflow as tf
trX = np.linspace(-1, 1, 101)
trY = 2 * trX + 3 + np.random.randn(*trX.shape) * 0.33
def lin_model(X, w, b):
return X * w + b
w = tf.Variable([0.])
b = tf.Variable([0.])
x = tf.placeholder(tf.float32, shape=(101))
y = tf.placeholder(tf.float32, shape=(101))
y_hypo = lin_model(x, w, b)
cost = tf.reduce_mean(tf.square(y_hypo - y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
# Initializing
init = tf.initialize_all_variables()
# Train
with tf.Session() as sess:
sess.run(init)
for i in range(1001):
sess.run(train_step, feed_dict={x: trX, y: trY})
if i % 100 == 0:
print("%5d:(w,b)=(%10.4f, %10.4f)" % (i, sess.run(w), sess.run(b)))
上記コードをSpyderに貼り付けて実行すれば、以下の画像のように動作する。printのみはPython3.5の仕様変更から()でくくるように変更した。
コードの解説をすると、
y=ax+b
という形があってaとbを求めようとしている。
y=2x+3
の式に基づいて得られる以下のデータあったときに、
trY = 2 * trX + 3 + np.random.randn(*trX.shape) * 0.33
(np.random.randn(*trX.shape) * 0.33は雑音や誤差)
「a=2」と「b=3」を推定するという感じ。
コンソールを見ると、a=2,b=3が近似値として求められているのがわかる。
Kerasの紹介
Tensorflowのチュートリアルをある程度やったら、実際のディープラーニングはKerasを使用してやった方が、初心者には便利だ。
Kerasのチュートリアルは以下の公式ホームページに日本語がある。
https://keras.io/ja/
Tensorflowをある程度理解できれば、すぐに理解できると思うので、ここでは詳細に書かないが、Tensorflowよりも直感的にコードが書ける。