作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道我是不是做错了什么,或者结果真的那么差。让我们假设最简单的 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
设置为您的训练器,您会看到非常小的错误(例如 Total error: 0.0532936260399)
我假设网络的误差是 5%,那么之后的激活函数怎么会差这么多呢?
显然,我将 pybrain 用于更复杂的事情,但我遇到了同样的问题。我得到大约 50% 的测试样本是错误的,即使网络说错误是 0.09 左右。
有什么帮助吗?
最佳答案
可以找到类似的问题here .从那里看来,这个训练函数在这里并不适用,因为并非所有数据都用于训练,而是一些数据用于交叉验证。尝试多次将数据点添加到训练集中。
另外,这个例子似乎需要动量项才能起作用。有一个用 pybrain 训练异或的例子,使用不同的训练方法 here当我将层数设置为 3 时,这对我有用。这使用了 0.99 的动量项。
我会将此作为评论发布,因为它没有完全回答问题,但我没有足够的评论点...
关于python - pybrain 结果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134810/
我是一名优秀的程序员,十分优秀!