python - pybrain 结果不佳

标签 python neural-network xor 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 设置为您的训练器,您会看到非常小的错误(例如 Total error: 0.0532936260399)

我假设网络的误差是 5%,那么之后的激活函数怎么会差这么多呢?

显然,我将 pybrain 用于更复杂的事情,但我遇到了同样的问题。我得到大约 50% 的测试样本是错误的,即使网络说错误是 0.09 左右。

有什么帮助吗?

最佳答案

可以找到类似的问题here .从那里看来,这个训练函数在这里并不适用,因为并非所有数据都用于训练,而是一些数据用于交叉验证。尝试多次将数据点添加到训练集中。

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

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

关于python - pybrain 结果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134810/

相关文章:

python - UnicodeDecodeError : 'ascii' codec can't decode byte 0xef in position 1

python - 如何使用经过训练的 Tensorflow 模型进行预测

swift - 如何在 swift 中执行逻辑 XOR 运算以找出所有文本字段是空还是满?

mysql - 为什么这个 MySQL XOR 查询返回 0?

可以在 C 中优化通过将数据与自身进行异或运算来对内存进行归零吗?

Python 多重处理 - 太慢

python - 可以生成动态变量吗?

python - 具有无限/动态成员的枚举

python - 如何使用keras实现一个简单的神经网络

machine-learning - 将 C# Encog 神经网络导出到 C++