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 に答える