Neural network 多位神经异或网络

Neural network 多位神经异或网络,neural-network,xor,Neural Network,Xor,我试图训练一个8位的神经网络输出其输入的异或。我正在使用ffnet库(http://ffnet.sourceforge.net/). 对于少量输入位(最多4位),反向传播产生预期结果。对于8位,NN似乎“收敛”,这意味着它为任何输入输出相同的值。我使用多层神经网络:输入,隐藏层,输出,加上偏置节点 我做错什么了吗?这个NN是否需要具有一定的形状,才能学习XOR 编辑: 这是我正在使用的代码: def experiment(bits, input, solution, iters): co

我试图训练一个8位的神经网络输出其输入的异或。我正在使用ffnet库(http://ffnet.sourceforge.net/). 对于少量输入位(最多4位),反向传播产生预期结果。对于8位,NN似乎“收敛”,这意味着它为任何输入输出相同的值。我使用多层神经网络:输入,隐藏层,输出,加上偏置节点

我做错什么了吗?这个NN是否需要具有一定的形状,才能学习XOR

编辑:

这是我正在使用的代码:

def experiment(bits, input, solution, iters):
    conec = mlgraph( (bits, bits, 1) )
    net = ffnet(conec)
    net.randomweights()
    net.train_momentum(input, solution, eta=0.5, momentum=0.0, maxiter=iters)
    net.test(input, solution, iprint=2)
我使用
momentum=0.0
来获得纯反向传播

这是我得到的结果的一部分:

Testing results for 256 testing cases:
OUTPUT 1 (node nr 17):
Targets vs. outputs:
   1      1.000000      0.041238
   2      1.000000      0.041125
   3      1.000000      0.041124
   4      1.000000      0.041129
   5      1.000000      0.041076
   6      1.000000      0.041198
   7      0.000000      0.041121
   8      1.000000      0.041198

每一个向量都是这样(256个值)

你对神经元使用什么传递函数?这就是我使用的代码:一切似乎都正常。所以8位的意思是你给它类似于0 1 1 0 1 0 0 0 0 0的值,然后说它应该输出1?我会将隐藏层中的神经元数量从1调整到8,看看是否能得到更好的结果。当输入层和隐藏层相同时,可能会过度学习数据。不断地改变不同的因素,一次一个(例如,在隐藏层编号之后,我会稍微利用动量,因为你可能会陷入局部最小值)。通过将eta降低到0.1,并将迭代次数增加到1M,我让它工作了7位:)太棒了!Eta应该是学习率,对吗?