多位神经异或网络
我正在尝试训练一个 8 位神经网络来输出其输入的异或。我正在使用 ffnet 库(http://ffnet.sourceforge.net/)。对于少量输入位(最多 4 个),反向传播会产生预期结果。对于 8 位,NN 似乎“收敛”,这意味着它对任何输入都输出相同的值。我使用的是多层神经网络:输入、隐藏层、输出以及偏置节点。
我做错了什么吗?这个神经网络是否需要具有一定的形状才能学习异或?
编辑:
这是我正在使用的代码:
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 个值)都是这样
I'm trying to train an 8-bit neural network to output XOR of its inputs. I'm using ffnet library (http://ffnet.sourceforge.net/). For low number of input bits (up to 4) backpropagation produces expected results. For 8 bits, NN seems to 'converge', meaning that it outputs the same value for any input. I'm using a multilayer NN: inputs, hidden layer, output, plus bias node.
Am I doing something wrong? Does this NN need to be of certain shape, to be able to learn to XOR?
Edit:
This is the code I'm using:
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)
I'm using momentum=0.0
to get pure back-propagation.
This is a part of the results I get:
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
It goes on like this for every vector (256 values)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论