はじめに
-
Theanoとは
- 多次元の配列を含む数式を効率的に定義、最適化、評価するためのPythonライブラリ
-
Kerasとは
- Python / Theanoによって実装されたミニマルかつ高度にモジュラー化されたニューラルネットワークライブラリ
- モジュール化、ミニマリズム、拡張性により、簡単かつ素早くプロトタイピングすることがきる。
- convolutional network(CNN)とrecurrent network(RNN)および、それらの組み合わせサポートしている。
- 任意の接続スキームをサポートしている(モデルに対する複数のインプット、複数のアウトプット等)。
- CPUとGPUでシームレスに実行することができる。
参考資料
- Installation of Theano on Windows (http://deeplearning.net/software/theano/install_windows.html)
インストール先の環境
本手順の確認に使用したインストール先環境を以下に示す。
OS: Windows 8.1 64bit
GPU: NVIDIA GeForce GTX 760
Visual Studio Community 2013のインストール
- 以下のURLのページからインストーラをダウンロードして実行する。
https://www.visualstudio.com/ja-jp/downloads/download-visual-studio-vs
- Microsoft Visual Studio Community 2013 Update 4 - 英語(vs_community.exe)をダウンロード
- MFC等のOptional features to installは必要ないので全てチェックを外してインストールする(必要になったら後からインストールできる)。
- Visual Studio Community 2013は無償のソフトウェアであるがMicrosoftアカウントに紐づくライセンスは必要となる(30日で試用期間が切れる)。
したがって、インストール後に一度起動し、Microsoftアカウントでサインインすることにより、ライセンスのダウンロードとインストールを行う必要がある。
CUDA 7のインストール
- 以下のURLのページからインストーラをダウンロードして実行する。
https://developer.nvidia.com/cuda-downloads
- Windows 8.1 Network Installer (cuda_7.0.28_windows_network.exe)をダウンロード
- インストールオプションは全てデフォルトのまま変えずにインストールする。
Git for Windowsのインストール
- 以下のURLのページからインストーラをダウンロードして実行する。
http://msysgit.github.io/
- Git-1.9.5-preview20150319.exeをダウンロード
- コマンドプロンプトから使用できるように Adjusting your PATH environment を Use Git from the Windows Command Prompt に設定してインストールする。
- それ以外のインストールオプションは全てデフォルトのまま変えずにインストールする。
※以下、Python 3.4系のインストール手順を示す(未確認であるが2.7系でも同様の手順になるものと思われる)。
Anacondaのインストール
- 以下のURLからインストーラをダウンロードして実行する。
http://continuum.io/downloads#py34
- Windows 64-Bit Python 3.4 Graphical Installer (Anaconda3-2.3.0-Windows-x86_64.exe)をダウンロード
- インストールオプションは全てデフォルトのまま変えずにインストールする。
- パッケージを最新状態にアップデートしてから、Theanoの実行に必要なパッケージ(mingw, libpython)をインストールする。
- コマンドプロンプトで以下のコマンドを実行する。
>conda update conda >conda update anaconda >conda update --all >conda install mingw libpython
Theanoのインストール
- Github上のTheanoをインストールする。
- コマンドプロンプトで以下のコマンドを実行する。
>pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git Collecting git+git://github.com/Theano/Theano.git Cloning git://github.com/Theano/Theano.git to c:\users\USERNAME\appdata\local\temp\pip-j0qynrd6-build Installing collected packages: Theano Found existing installation: Theano 0.7.0 Uninstalling Theano-0.7.0: Successfully uninstalled Theano-0.7.0 Running setup.py install for Theano Successfully installed Theano-0.7.0
- コマンドプロンプトで以下のコマンドを実行する。
- 設定ファイル(.theanorc.txt)をホームフォルダに作成する。
%USERPROFILE%\theanorc.txt
[global]
device = gpu
floatX = float32
#optimizer_including = cudnn
[nvcc]
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
fastmath = True
3. 以下のテストプログラムを実行し、GPUの使用が有効になっていることを確認する。
theano_test.py
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print('Looping %d times took' % iters, t1 - t0, 'seconds')
print('Result is', r)
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
- 実行結果
>python theano_test.py DEBUG: nvcc STDOUT mod.cu (以下、DEBUG出力は省略) Using gpu device 0: GeForce GTX 760 [GpuElemwise{exp,no_inplace}(), HostFromGpu(Gp uElemwise{exp,no_inplace}.0)] Looping 1000 times took 0.472337007522583 seconds Result is [ 1.23178029 1.61879349 1.52278066 ..., 2.20771813 2.29967761 1.62323296] Used the gpu
Kerasのインストール
- Github上のKerasをインストールする。
- コマンドプロンプトで以下のコマンドを実行する。
>pip install --upgrade --no-deps git+git://github.com/fchollet/keras.git Collecting git+git://github.com/fchollet/keras.git Cloning git://github.com/fchollet/keras.git to c:\users\USERNAME\appdata\local\temp\pip-kmvlykxl-build Installing collected packages: Keras Found existing installation: Keras 0.1.2 Uninstalling Keras-0.1.2: Successfully uninstalled Keras-0.1.2 Running setup.py install for Keras Successfully installed Keras-0.1.2
- コマンドプロンプトで以下のコマンドを実行する。
- MNIST(手書き数字のデータセット)の画像認識のサンプルプログラムを実行して動作確認する。
- 以下のサンプルプログラムをダウンロードする。
https://raw.githubusercontent.com/fchollet/keras/master/examples/mnist_mlp.py
- コマンドプロンプトで以下のコマンドを実行する。
(データセットがダウンロードされ、学習(Train)と評価(Test)が行われる)>python mnist_mlp.py Using gpu device 0: GeForce GTX 760 Downloading data from https://s3.amazonaws.com/img-datasets/mnist.pkl.gz 15302656/15296311 [==============================] - 7s 60000 train samples 10000 test samples DEBUG: nvcc STDOUT mod.cu (以下、DEBUG出力は省略) Train on 60000 samples, validate on 10000 samples Epoch 0 1s - loss: 0.5052 - acc: 0.8540 - val_loss: 0.2022 - val_acc: 0.9391 Epoch 1 1s - loss: 0.2114 - acc: 0.9379 - val_loss: 0.1349 - val_acc: 0.9588 Epoch 2 1s - loss: 0.1529 - acc: 0.9546 - val_loss: 0.1089 - val_acc: 0.9672 Epoch 3 1s - loss: 0.1256 - acc: 0.9628 - val_loss: 0.0907 - val_acc: 0.9712 Epoch 4 1s - loss: 0.1085 - acc: 0.9668 - val_loss: 0.0812 - val_acc: 0.9747 Epoch 5 1s - loss: 0.0945 - acc: 0.9707 - val_loss: 0.0742 - val_acc: 0.9766 Epoch 6 1s - loss: 0.0856 - acc: 0.9740 - val_loss: 0.0790 - val_acc: 0.9765 Epoch 7 1s - loss: 0.0774 - acc: 0.9763 - val_loss: 0.0756 - val_acc: 0.9769 Epoch 8 1s - loss: 0.0721 - acc: 0.9771 - val_loss: 0.0671 - val_acc: 0.9785 Epoch 9 1s - loss: 0.0666 - acc: 0.9797 - val_loss: 0.0712 - val_acc: 0.9774 Epoch 10 1s - loss: 0.0623 - acc: 0.9805 - val_loss: 0.0670 - val_acc: 0.9770 Epoch 11 1s - loss: 0.0587 - acc: 0.9818 - val_loss: 0.0727 - val_acc: 0.9779 Epoch 12 1s - loss: 0.0554 - acc: 0.9823 - val_loss: 0.0643 - val_acc: 0.9804 Epoch 13 1s - loss: 0.0512 - acc: 0.9832 - val_loss: 0.0709 - val_acc: 0.9787 Epoch 14 1s - loss: 0.0495 - acc: 0.9847 - val_loss: 0.0638 - val_acc: 0.9803 Epoch 15 1s - loss: 0.0465 - acc: 0.9845 - val_loss: 0.0664 - val_acc: 0.9809 Epoch 16 1s - loss: 0.0443 - acc: 0.9860 - val_loss: 0.0599 - val_acc: 0.9831 Epoch 17 1s - loss: 0.0438 - acc: 0.9857 - val_loss: 0.0652 - val_acc: 0.9813 Epoch 18 1s - loss: 0.0419 - acc: 0.9865 - val_loss: 0.0673 - val_acc: 0.9813 Epoch 19 1s - loss: 0.0387 - acc: 0.9877 - val_loss: 0.0682 - val_acc: 0.9805 Test score: 0.0682498943741 Test accuracy: 0.9805
- 以下のサンプルプログラムをダウンロードする。