python – 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))
例如
>>> print net.activate((1,0))
[ 0.37855891]
>>> print net.activate((1,1))
[ 0.6592548]
预计是0.我知道我可以明显地圆但仍然我会期望网络对于这样一个简单的例子更精确.它可以被称为“工作”在这里,但我怀疑我错过了一些重要的原因,这是非常无法使用的……
问题是,如果你将verbose = True设置为你的训练师,你可以看到很小的错误(如总错误:0.0532936260399)
我认为网络的错误是5%,那么之后如何在激活功能中关闭呢?
我明显使用pybrain来做更复杂的事情,但我有同样的问题.即使网络说错误大约是0.09左右,我也会得到大约50%的测试样本错误.
有任何帮助吗?
解决方法:
类似的问题可以在here找到.从那里看,这个训练功能似乎不适用于此,因为并非所有数据都用于训练,但有些数据用于交叉验证.尝试多次将数据点添加到训练集.
此外,这个例子似乎需要一个动量项才能起作用.有一个用pybrain训练xor的例子,使用不同的训练方法here,当我将层数设置为3时,它对我有用.这使用动量项0.99.
我会将此作为评论发布,因为它没有完全回答这个问题,但我没有足够的评论意见……
标签:python,neural-network,xor,pybrain 来源: https://codeday.me/bug/20190517/1124001.html