LukacikPavel

projekt

Nov 2nd, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 3.36 KB | None | 0 0
  1. clear all;
  2. % generovanie treningovej vzorky
  3. poc = 1;
  4. for x1 = 0:0.2:1.8
  5.   for y1 = 0:0.2:1.8
  6.     z = (x1 - (y1.*y1))./(x1+y1+1);
  7.     VstupSiete(poc,1)=x1;
  8.     VstupSiete(poc,2)=y1;
  9.     VstupSiete(poc,3)=z;
  10.     poc=poc+1;
  11.    end;
  12. end;
  13.  
  14. % vykreslenie treningovej vzorky
  15. figure;
  16. scatter3(VstupSiete(1:rows(VstupSiete),1), VstupSiete(1:rows(VstupSiete),2), VstupSiete(1:rows(VstupSiete),3));
  17.  
  18. % normalizacia
  19. maximum = max(max(abs(VstupSiete)));
  20. if maximum > 1
  21.   N_VstupSiete = VstupSiete/maximum;
  22. else
  23.   N_VstupSiete = VstupSiete;
  24. end;
  25.  
  26. % nastavenie poctu neuronov v jednotlivych vrstvach
  27. pocetVstup=2;
  28. pocet1Skryta=4;
  29. pocet2Skryta=3;
  30.  
  31. % nahodna inicializacia vah
  32. Vahy1 = rand(pocetVstup+1, pocet1Skryta);
  33. Vahy1(3,:) = ones(1);
  34. Vahy2 = rand(pocet1Skryta+1, pocet2Skryta);
  35. Vahy2(pocet1Skryta+1,:) = ones(1);
  36. Vahy3 = rand(pocet2Skryta+1, 1);
  37. Vahy3(pocet2Skryta+1,:) = ones(1);
  38.  
  39. Potencial1Skrytej=ones(1,pocet1Skryta);
  40. Potencial2Skrytej=ones(1,pocet2Skryta);
  41. PotencialVystupnej=ones(1,1);
  42.  
  43. % inicializacia vstupov
  44. Vystupy0 = ones(1,3);
  45. Vystupy0(3)=-1;
  46. Vystupy1 = ones(1,pocet1Skryta+1);
  47. Vystupy1(pocet1Skryta+1)=-1;
  48. Vystupy2 = ones(1,pocet2Skryta+1);
  49. Vystupy2(pocet2Skryta+1)=-1;
  50. Vystupy3 = ones(1,1);
  51.  
  52. chybaSiete = ones(1,1);
  53. VysledkySiete=ones(100,1);
  54.  
  55. for e=1:50
  56.   chybaSiete = 0;
  57.   for r=1:100
  58.    
  59.     Vystupy0(1)=N_VstupSiete(r,1);
  60.     Vystupy0(2)=N_VstupSiete(r,2);
  61.    
  62.     for i=1:pocet1Skryta  
  63.       Potencial1Skrytej(1,i)=Vystupy0(1,:)*Vahy1(:,i);
  64.       Vystupy1(1,i)=tanh(Potencial1Skrytej(1,i));
  65.     end;
  66.    
  67.     for i=1:pocet2Skryta  
  68.       Potencial2Skrytej(1,i)=Vystupy1(1,:)*Vahy2(:,i);
  69.       Vystupy2(1,i)=tanh(Potencial2Skrytej(1,i));
  70.     end;
  71.    
  72.     PotencialVystupnej(1,1)=Vystupy2(1,:)*Vahy3(:,1);
  73.     Vystupy3(1,1)=tanh(PotencialVystupnej(1,1));
  74.    
  75.     % delty
  76.     ChybaNaVystupe = ones(1,1);
  77.     ChybaNaVystupe = (1-tanh(PotencialVystupnej(1,1))^2)*(N_VstupSiete(r,3)-Vystupy3);
  78.    
  79.     Chyba2Vrstva = ones(1,pocet2Skryta);
  80.      for i=1:pocet2Skryta
  81.       Chyba2Vrstva(1,i) = (1-tanh(Potencial2Skrytej(1,i))^2)*(Vahy3(i,1)*ChybaNaVystupe(1,1));
  82.     end;
  83.    
  84.     pomocnySucin = ones(1,pocet1Skryta);
  85.     Chyba1Vrstva = ones(1,pocet1Skryta);
  86.     for i=1:pocet1Skryta
  87.       for j=1:pocet2Skryta
  88.         pomocnySucin(1,i)=Vahy2(i,j)*Chyba2Vrstva(1,j);
  89.       end;
  90.      
  91.       Chyba1Vrstva(1,i) = (1-tanh(Potencial1Skrytej(1,i))^2)*pomocnySucin(1,i);
  92.     end;
  93.    
  94.     % zmena vah
  95.     UciaciPomer = 0.1;
  96.     for i=1:(pocetVstup+1)
  97.       for j=1:pocet1Skryta
  98.         pomocnySucin(i,j)=UciaciPomer*Chyba1Vrstva(1,j)*Vystupy0(1,i);
  99.         Vahy1(i,j)=Vahy1(i,j)+pomocnySucin(i,j);
  100.       end;
  101.     end;
  102.    
  103.     for i=1:(pocet1Skryta+1)
  104.       for j=1:pocet2Skryta
  105.         pomocnySucin(i,j)=UciaciPomer*Chyba2Vrstva(1,j)*Vystupy1(1,i);
  106.         Vahy2(i,j)=Vahy2(i,j)+pomocnySucin(i,j);
  107.       end;
  108.     end;
  109.    
  110.     for i=1:(pocet2Skryta+1)
  111.       pomocnySucin(i,1)=UciaciPomer*ChybaNaVystupe(1,1)*Vystupy2(1,i);
  112.       Vahy3(i,j)=Vahy3(i,1)+pomocnySucin(i,1);
  113.     end;
  114.     VysledkySiete(r,1) = Vystupy3;
  115.    
  116.     celkovaChyba = ((N_VstupSiete(r,3)-Vystupy3(1,1))^2)*0.5;
  117.     chybaSiete = chybaSiete + celkovaChyba;
  118.   end;
  119.   % celkova chyba epochy
  120.   chybaSiete
  121.   chyby(e,1)=chybaSiete;
  122. end;
  123.  
  124. figure;
  125. plot(N_VstupSiete(:,3),'r');hold on;
  126. plot(VysledkySiete(:,1),'b');
  127.  
  128. figure;
  129. plot(chyby(:,1),'g');
Add Comment
Please, Sign In to add comment