PyBrain的概念是将一系列的数据处理的算法封装到被称之为Module的模块中。一个最小的Module通常包含基于机器学习算法的可调整的参数集合。Modules包含一个输入和输出的buffer,外加误差buffer用于存在误差反向传播的场景。
Modules被嵌入到Network类中,并且使用Connection对象进行连接,其中可能包含一系列可调整的参数,比如连接的权重。而Network类本身又是一个Module,因此可以基于此构建多层网络结构。库中有快捷的方式构造最常用网络结构,但原则上这个系统允许嵌入最随机的连接方式来形成一个无循环图。
网络中的参数通过Trainer进行调节,它从Dataset中学习到最优化的参数。还有的增强方式的实验是通过相关的最优化的目标构造模拟环境进行参数学习。
快速安装:保证SciPy已经安装好,下载完源码后执行:
1 | python setup.py install |
更多安装方法,参见http://wiki.github.com/pybrain/pybrain/installation
1 2 | >>> from pybrain.tools.shortcuts import buildNetwork >>> net = buildNetwork(2, 3, 1) |
网络包含两个神经元的输入层、3个神经元的隐层和1个神经元的输出层。在PyBrain中,这些层就是Module,而且它们已经被FullConnection(全连接)对象连接在一起了。
1 2 | >>> net.activate([2, 1]) array([-0.98646726]) |
网络中已经有了一些初始随机设定的参数值,给定一个输入就可以得到相应的输出。
1 2 3 4 5 6 | >>> net['in'] LinearLayer 'in'> >>> net['hidden0'] SigmoidLayer 'hidden0'> >>> net['out'] LinearLayer 'out'> |
通过查看结构可以更清楚的看到网络中的每一部分,当使用buildNetwork快捷方式构建网络时,各部分结构被自动分配了。
上面的例子隐层是使用sigmoid函数作为默认函数:但很多情况下,我们需要更改,因此提供了不同类型的层:
1 2 3 4 | >>> from pybrain.structure import TanhLayer >>> net = buildNetwork(2, 3, 1, hiddenclass=TanhLayer) >>> net['hidden0'] TanhLayer 'hidden0'> |
输出层也一样
1 2 3 4 | >>> from pybrain.structure import SoftmaxLayer >>> net = buildNetwork(2, 3, 2, hiddenclass=TanhLayer, outclass=SoftmaxLayer) >>> net.activate((2, 3)) array([ 0.6656323, 0.3343677]) |
也可以告诉网络加入偏差
1 2 3 | >>> net = buildNetwork(2, 3, 1, bias=True) >>> net['bias'] BiasUnit 'bias'> |
开发文档位于docs/documentation.pdf或者docs/html/*下,包含快速开始、教程、API等等。
如果安装了matplotlib,位于examples/*目录下有不错的示例。
进行PyBrain开发和贡献,到http://wiki.github.com/pybrain/pybrain/guidelines,更多到pybrain Google Group。
联系客服