gpt4 book ai didi

machine-learning - PyBrain:为什么 PyBrain NN 不学习对 XOR 进行分类?

转载 作者:行者123 更新时间:2023-11-30 09:12:48 25 4
gpt4 key购买 nike

我有以下代码:

from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import TanhLayer

ds = SupervisedDataSet(2, 1)

ds.addSample((0, 0), (0,))
ds.addSample((0, 1), (1,))
ds.addSample((1, 0), (1,))
ds.addSample((1, 1), (0,))

net = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)
trainer = BackpropTrainer(net, ds)

trainer.trainUntilConvergence()

print '0,0 : {0}'.format(net.activate([0, 0]))
print '0,1 : {0}'.format(net.activate([0, 1]))
print '1,0 : {0}'.format(net.activate([1, 0]))
print '1,1 : {0}'.format(net.activate([1, 1]))

我得到的输出总是收敛到与异或不同的东西。我得到的输出示例:

0,0 : [ 1.33865922]
0,1 : [ 0.78127428]
1,0 : [ 0.8318278]
1,1 : [ 0.48067]

最佳答案

成功解决。与您分享解决方案,以便您也可以使用它:

我没有使用 trainer.trainUntilCovergence(),而是调用了 trainer.train() K 次(我使用了 K=1000),它起作用了

我的代码的变化:

#trainer.trainUntilConvergence()
for i in xrange(1000):
trainer.train()

输出的变化:

0,0 : [ 0.00347109]
0,1 : [ 0.99712772]
1,0 : [ 0.99725655]
1,1 : [ 0.00121727]

请注意,当我使用的迭代次数不足(例如 100)时,我得到了错误的输出

添加@dnth评论的重要注释:

trainUntilConvergence() 不起作用的原因是此方法会将您的数据分为 75% 的训练和 25% 的验证。由于 XOR 问题只有 4 个样本数据,因此已取出 1 个数据作为验证数据,仅对剩余 3 个数据进行训练。因此,网络找到的解决方案很差,因为所有 XOR 情况的训练数据都不完整

(验证==测试集)

关于machine-learning - PyBrain:为什么 PyBrain NN 不学习对 XOR 进行分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com