如何使用MATLAB训练能够计算XOR的神经网络?

时间:2013-02-26 12:35:37

标签: matlab neural-network

我正在尝试使用MATLAB训练一个简单的前馈网络。它计算XOR。这是我的代码:

net = feedforwardnet([3]);
P = [0 0; 0 1; 1 0; 1 1]';
T = [0 1 1 0]; % desired output
net = configure(net, P, T);
net.trainParam.goal = 1e-8;
net.trainParam.epochs = 1000;
net = train(net, P, T);

它说达到了目标。但是,我没有得到所需的输出:

sim(net, P)

1.4885    0.6830    0.7796    0.3879

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

您需要更多培训示例。重复其中一些。

在我的情况下,我尝试过:

net = feedforwardnet([3]);
%Repeat 4 times
P = [0 0; 0 1; 1 0; 1 1; 0 0; 0 1; 1 0; 1 1; 0 0; 0 1; 1 0; 1 1; 0 0; 0 1; 1 0; 1 1]';
T = [0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0]; % desired output
net = configure(net, P, T);
net.trainParam.goal = 1e-8;
net.trainParam.epochs = 1000;
net = train(net, P, T);

结果是

 sim(net, P)

ans =
  Columns 1 through 8
    0.0000    1.0000    1.0000    0.0000    0.0000    1.0000    1.0000    0.0000
  Columns 9 through 16
    0.0000    1.0000    1.0000    0.0000    0.0000    1.0000    1.0000    0.0000