我有以下代码,来自PyBrain教程:
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure.modules import TanhLayer
ds = SupervisedDataSet(2, 1)
ds.addSample((0,0), (0,))
ds.addSample((0,1), (1,))
ds.addSample((1,0), (1,))
ds.addSample((1,1), (0,))
net = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)
trainer = BackpropTrainer(net, ds)
for inp, tar in ds:
print [net.activate(inp), tar]
errors = trainer.trainUntilConvergence()
for inp, tar in ds:
print [net.activate(inp), tar]
然而,结果是一个未经充分训练的神经网络。在查看错误输出时,网络被正确地训练,但它使用“continueEpochs”参数进行更多的训练后,网络表现变得更差了。因此,网络正在收敛,但没有办法得到最佳训练的网络。PyBrain的文档暗示返回的是训练最好的网络,但实际上它返回一组错误。将continueEpochs设置为0时出现错误(ValueError: max() arg is an empty sequence),因此continueEpochs必须大于0。PyBrain是否真的得到维护?因为文档和代码之间存在很大的差异。