2

我正在尝试使用 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

我错过了什么吗?

4

1 回答 1

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
于 2013-02-26T13:35:39.220 回答