如何使用pybrain的黑盒优化方法训练神经网络以处理监督数据集?

我已经尝试使用pybrain,并了解如何生成具有自定义架构的神经网络,并使用反向传播算法对其进行监督数据集的训练。

然而,我对优化算法以及任务、学习代理和环境的概念感到困惑。

例如:我如何使用pybrain的遗传算法来实现一个神经网络,以对XOR数据集进行分类?

(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)

(2) pybrain.optimization.GA()


回答:

我终于搞明白了!一旦你知道怎么做,总是很容易的!

本质上,GA的第一个参数是适应度函数(文档中称为评估器),它必须将第二个参数(个体,文档中称为可评估的)作为其唯一参数。

在这个例子中,将训练用于XOR

from pybrain.datasets.classification import ClassificationDataSet# 下面的行可以替换为所选的算法,例如# from pybrain.optimization.hillclimber import HillClimberfrom pybrain.optimization.populationbased.ga import GAfrom pybrain.tools.shortcuts import buildNetwork# 创建XOR数据集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将nn作为其第一个且唯一的参数ga = GA(d.evaluateModuleMSE, nn, minimize=True)for i in range(100):    nn = ga.learn(0)[0]

上述脚本执行后的测试结果:

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])

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注