我想知道我是否做错了什么,或者结果是否真的那么差。让我们假设文档中显示的最简单的 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% 的测试样本出错。
有什么帮助吗?