尝试使用前馈网络在 MATLAB 中制作异或门

Trying to make an XOR gate in MATLAB using Feed Forward Network

我试图在 Matlab 中制作一个简单的 XOR 门,只是为了演示前馈网络,但我无法让输出匹配我的目标。我对 Matlab 中的 ANN 还很陌生,所以非常感谢任何帮助。这是我的简单代码:

% 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})

最后一位刚刚被使用,所以我可以看到使用的权重和偏差。对于某些上下文,这只是来自一个问题 sheet,例如,我之前创建了一个 OR 和 AND 门,但它们是线性可分的,所以我可以用一个感知器来完成!这个异或门让我很困惑!

提前感谢您的帮助: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)