[Matlab] XOR simulatie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het bijgevoegde stukje code simuleert een neuraal net dat het XOR probleem oplost. Ik zou denken dat het netwerk twee inputs en één output zou hebben.

Maar, matlab tekent dit netwerk op de volgende manier:

Afbeeldingslocatie: http://img704.imageshack.us/img704/2626/123ya.png

Het lijkt alsof er maar één input is! Of wordt het impliciet door Matlab begrepen omdat de input data (p) een 2 hoog matrix is?

Matlab versie r2009b

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
p = [0 0 1 1; 0 1 0 1];  % "p"redictors 
t = [0 1 1 0];                % "t"argets 
y00      = mean(t)         % 0.5 
e00      = t-y00            % [-0.5 0.5 0.5 -0.5] 
MSE00 = mse(e00)      % 2.5e-1 
rand('state',0)              % RNG initialization 
for i = 1:10
  tic 
  net=newff(minmax(p),[2 1],{'tansig','tansig'},'traingdx'); 
  net.trainParam.goal = 10e-6; 
  net.trainParam.epochs = 1000; 
  [net,tr]  = train(net,p,t); 
  y(i,:)    = sim(net,p); 
  MSE(i)    = tr.perf(end); 
  epochs(i) = tr.epoch(end); 
  time(i)   = toc; 
end 
format short g 
disp('Time   Epochs   MSE      y(1)      y(2)    y(3)    y(4)') 
summary = [time' epochs' MSE' y] 
% Time   Epochs   MSE      y(1)      y(2)    y(3)    y(4) 
% 
% 4.057  1000  *1.23e-1  -4.83e-3   0.991   0.501   4.94e-1 
% 4.087  1000  *1.25e-1  -3.75e-3   0.984  *0.499  *5.00e-1 
% 4.026  1000  *4.19e-5   7.55e-5   0.991   0.991   3.10e-5 
% 4.056  1000  *1.25e-1  *5.01e-1   0.984   0.500   6.10e-4 
% 3.246  1000  *1.69e-5   9.30e-5   0.993   0.996   5.04e-5 
% 4.056  1000  *2.03e-5  -1.18e-4   0.996   0.992   1.55e-3 
% 4.041  1000  *1.25e-1   6.66e-3   0.505   0.988  *5.06e-1 
% 4.104  1000  *1.52e-5   1.01e-4   0.993   0.997   3.53e-6 
% 4.103  1000  *1.25e-1   4.98e-1   0.986  *0.496  -4.62e-3 
% 4.182  1000  *1.66e-5   3.22e-5   0.997   0.992   1.93e-4

Acties:
  • 0 Henk 'm!

  • Semyon
  • Registratie: April 2001
  • Laatst online: 09:08
Ben niet zo bekend met matlab, maar wel met neurale netwerken.
Maar als ik je output zo eens bekijk in voor Y(1) .. Y(4) dan lijkt het toch op dat je XOR netjes gesimuleerd wordt? Y(1) en Y(4) zijn vrijwel 0 en in de meeste gevallen zijn Y(2) en Y(3) wel redelijk 1. Je hebt een paar waar het maar een half is, dat kom welicht omdat je neural netwerk in een lokaal optimum is blijven hangen.

Als het werkt, dan moet je toch wel 2 inputs hebben? Ik begrijp de tekening ook niet helemaal hoor, maar als het werkt dan lijkt me dat het neurale netwerk wel de 2 inputs krijgt. Hoe zou het anders aan het antwoord komen met maar 1 variable?

Only when it is dark enough, can you see the stars