我有以下代码,来自 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 是一个空序列),因此 continueEpochs 必须大于 0。
PyBrain 是否真的被维护了,因为文档和代码似乎有很大的不同。