超言理論

特に益もない日記である

PyBrainを使って見たくなった

突然PyBrain*1を使って見たくなったので使ってみた。


ちなみに環境はwindows7+Cygwinになります。
順番にやっていきましょう。

1.SWIGライブラリの利用環境の構築

まず、PyBrainを動かすためのライブラリであるswigを用意します。
参考:SWIGのインストール / SWIGメモ - サンプルコードによるPerl入門

$ cd /usr/local/src
$ wget http://prdownloads.sourceforge.net/swig/swig-2.0.4.tar.gz
$ tar zxf swig-2.0.4.tar.gz
$ cd swig-2.0.4
$ ./configure
$ make
$ make install

割と普通のインストールで済みます。

2.PyBrainライブラリの利用環境の構築

次はPyBrainそのものの用意。
参考:映像奮闘記: PyBrain - a modular Machine Learning Library for Python

$ git clone git://github.com/pybrain/pybrain.git
$ cd pybrain
$ python setup.py install

こっちはgitからクローンしてきてインストール。
swigを入れておけば多分エラーは出ない(はず)。

3.PyBrainライブラリのテスト

実際にサンプルコードを書いて使ってみます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pybrain.datasets import SupervisedDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised import BackpropTrainer

NN = buildNetwork(2, 3, 1)
#buildNetwork(入力層, 隠れ層, 出力層)

DataSet = SupervisedDataSet(2, 1)
#SupervisedDataSet(入力データ, 出力データ)
DataSet.addSample((0, 0), (0,))
DataSet.addSample((0, 1), (1,))
DataSet.addSample((1, 0), (1,))
DataSet.addSample((1, 1), (0,))

trainer = BackpropTrainer(NN, DataSet, verbose = True)
for i in range(0,100):
    trainer.train()

TestSet = SupervisedDataSet(2, 1)
TestSet.addSample((0, 1),(1,))
trainer.testOnData(TestSet, verbose = True)

実行してみるとこんな感じ。

user@computer ~/python/pybrain
$ python test.py
Total error: 0.626118507064
Total error: 0.543774211211
Total error: 0.474400103703
~ 中略 ~
Total error: 0.1282241188
Total error: 0.12822205904
Total error: 0.128221424354

Testing on data:
out:     [0.578 ]
correct: [1     ]
error:  0.08925095
All errors: [0.089250954480017408]
Average error: 0.08925095448
('Max error:', 0.089250954480017408, 'Median error:', 0.089250954480017408)

ちゃんと学習できてるっぽいですね。

こんなに簡単にニューラルネットワークが使えるんならいろいろと夢が広がりそう。

*1:PyBrainとは:Python上でとっても簡単にニューラルネットワーク;NNを利用できるようになるライブラリ,2013/08/01追記


Copyright © 2012-2016 Masahiro MIZUKAMI All Rights Reserved.