はじめに
- 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
```
- 以下のテストプログラムを実行し、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