我正在尝试使用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
我错过了什么吗?
答案 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