回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试让一个网络(PyBrain)来学习二进制。这是我的代码,它将返回值保持在8左右,但当我用这个目标激活时,它应该是返回9。在</p>
<pre><code>from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import *
from pybrain.datasets import *
from pybrain.supervised.trainers import BackpropTrainer
from matplotlib.pyplot import *
trains = 3000
hiddenLayers = 4
dim = 4
target = (1, 0, 0, 1)
ds = SupervisedDataSet(dim, 1)
ds.addSample((0, 0, 0, 0), (0,))
ds.addSample((0, 0, 0, 1), (1,))
ds.addSample((0, 0, 1, 0), (2,))
ds.addSample((0, 0, 1, 1), (3,))
ds.addSample((0, 1, 0, 0), (4,))
ds.addSample((0, 1, 0, 1), (5,))
ds.addSample((0, 1, 1, 0), (6,))
ds.addSample((0, 1, 1, 1), (7,))
ds.addSample((1, 0, 0, 0), (8,))
net = buildNetwork(dim, hiddenLayers, 1, bias=True, hiddenclass=SigmoidLayer)
trainer = BackpropTrainer(net, ds)
tests = []
for i in range(trains):
trainer.train()
tests.append(net.activate(target))
plot(range(len(tests)), tests)
print net.activate(target)
show()
</code></pre>
<p>我试过调整隐藏层的数量,hiddenclass从TanhLayer调整到SigmoidLayer,并改变了列车的数量,但它总是收敛500倍左右(训练网络到数据集)。我应该使用不同于反向传播的培训师吗?如果是,为什么?在</p>