dav*_*ler 19 python artificial-intelligence neural-network pybrain
我已经玩过pybrain,了解如何使用自定义架构生成神经网络,并使用反向传播算法将它们训练到监督数据集.
但是我对优化算法以及任务,学习代理和环境的概念感到困惑.
例如:我如何实现神经网络,如(1)使用pybrain遗传算法(2)对XOR数据集进行分类?
(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)
(2) pybrain.optimization.GA()
dav*_*ler 20
我终于解决了!! 一旦你知道如何,它总是很容易!
基本上GA的第一个arg是适应度函数(在docs中称为求值者),它必须将第二个参数(一个个体,在docs中称为可评估)作为其唯一的arg.
在这个例子中将训练到异或
from pybrain.datasets.classification import ClassificationDataSet
# below line can be replaced with the algorithm of choice e.g.
# from pybrain.optimization.hillclimber import HillClimber
from pybrain.optimization.populationbased.ga import GA
from pybrain.tools.shortcuts import buildNetwork
# create XOR dataset
d = ClassificationDataSet(2)
d.addSample([0., 0.], [0.])
d.addSample([0., 1.], [1.])
d.addSample([1., 0.], [1.])
d.addSample([1., 1.], [0.])
d.setField('class', [ [0.],[1.],[1.],[0.]])
nn = buildNetwork(2, 3, 1)
# d.evaluateModuleMSE takes nn as its first and only argument
ga = GA(d.evaluateModuleMSE, nn, minimize=True)
for i in range(100):
nn = ga.learn(0)[0]
Run Code Online (Sandbox Code Playgroud)
上述脚本后的测试结果:
In [68]: nn.activate([0,0])
Out[68]: array([-0.07944574])
In [69]: nn.activate([1,0])
Out[69]: array([ 0.97635635])
In [70]: nn.activate([0,1])
Out[70]: array([ 1.0216745])
In [71]: nn.activate([1,1])
Out[71]: array([ 0.03604205])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10654 次 |
| 最近记录: |