我正在尝试训练一个8位神经网络来输出其输入的XOR。我正在使用ffnet库(http://ffnet.sourceforge.net/)。对于少量输入位(最多4个),反向传播产生预期结果。对于8位,NN似乎“收敛”,这意味着它为任何输入输出相同的值。我正在使用多层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个值),它都会像这样继续