我正试图在Matlab中制作一个简单的XOR门,只是为了演示前馈网络,但我在获得与目标匹配的输出时遇到了困难。我对Matlab中的人工神经网络很陌生,所以任何帮助都将不胜感激。这是我的简单代码:
% XOR gate
x = [0 0 1 1; 0 1 0 1] ;
t = [0,1,1,0];
net = feedforwardnet(2);
net = train(net,x,t);
y = net(x)
disp("Weights:")
disp(net.IW{1})
disp("Bias:")
disp(net.b{1})
最后一点只是使用了,这样我就可以看到使用的权重和偏差。对于某些上下文,这只是来自一个问题表,例如,之前我创建了一个OR和and门,但它们是线性可分离的,所以我可以用一个感知器来完成!这个XOR门让我很困惑!
提前感谢任何帮助:D
编辑:对于任何没有其他帖子帮助的人来说,这只是一个更新,我使用径向基函数(Matlab中的newrb(解决了XOR门,它从给定的目标给出了完美的结果。:(
试试这个工作代码:x代表训练示例y是目标我给网络添加了一个额外的隐藏层,其中有两个神经元你必须在训练之前首先配置网络。网络使用sigmoid函数作为激活函数。
x = [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1; 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1];
y =[0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0];
net = feedforwardnet([2 2]);
net = configure(net,x,y);
net.layers{3}.transferFcn = 'logsig';
[net,tr] = train(net,x,y);
net(x)