pybrain效果不佳

kos*_*ta5 5 python xor neural-network pybrain

我想知道我做错了什么或结果真的那么差.让我们假设最简单的NN示例如文档中所示:

>>>net = buildNetwork(2, 3, 1, bias=True)
>>> ds = SupervisedDataSet(2, 1)
>>> ds.addSample((0, 0), (0,))
>>> ds.addSample((0, 1), (1,))
>>> ds.addSample((1, 0), (1,))
>>> ds.addSample((1, 1), (0,))
>>> trainer = BackpropTrainer(net, ds)
>>> trainer.trainUntilConvergence()
>>> print net.activate((0,0))
>>> print net.activate((0, 1))
>>> print net.activate((1, 0))
>>> print net.activate((1, 1))
Run Code Online (Sandbox Code Playgroud)

例如

>>> print net.activate((1,0))
[ 0.37855891]
>>> print net.activate((1,1))
[ 0.6592548]
Run Code Online (Sandbox Code Playgroud)

预计是0.我知道我可以明显地圆但仍然我会期望网络对于这样一个简单的例子更精确.它可以被称为"工作"在这里,但我怀疑我错过了一些重要的原因,这是非常无法使用的......

问题是,如果你设置verbose=True为你的教练你可以看到很小的错误(如总错误:0.0532936260399)

我认为网络的错误是5%,那么之后如何在激活功能中关闭呢?

我明显使用pybrain来做更复杂的事情,但我有同样的问题.即使网络说错误大约是0.09左右,我也会得到大约50%的测试样本错误.

有任何帮助吗?

use*_*490 6

类似的问题可以在这里找到.从那里开始,似乎这个训练功能在这里不适用,因为并非所有数据都用于训练,但是一些数据用于交叉验证.尝试多次将数据点添加到训练集.

此外,这个例子似乎需要一个动量项才能起作用.有一个用pybrain训练xor的例子,这里使用不同的训练方法,当我将层数设置为3时,这对我有用.这使用动量项为0.99.

我会将此作为评论发布,因为它没有完全回答这个问题,但我没有足够的评论意见......