Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- % generovanie treningovej vzorky
- poc = 1;
- for x1 = 0:0.2:1.8
- for y1 = 0:0.2:1.8
- z = (x1 - (y1.*y1))./(x1+y1+1);
- VstupSiete(poc,1)=x1;
- VstupSiete(poc,2)=y1;
- VstupSiete(poc,3)=z;
- poc=poc+1;
- end;
- end;
- % vykreslenie treningovej vzorky
- figure;
- scatter3(VstupSiete(1:rows(VstupSiete),1), VstupSiete(1:rows(VstupSiete),2), VstupSiete(1:rows(VstupSiete),3));
- % normalizacia
- maximum = max(max(abs(VstupSiete)));
- if maximum > 1
- N_VstupSiete = VstupSiete/maximum;
- else
- N_VstupSiete = VstupSiete;
- end;
- % nastavenie poctu neuronov v jednotlivych vrstvach
- pocetVstup=2;
- pocet1Skryta=4;
- pocet2Skryta=3;
- % nahodna inicializacia vah
- Vahy1 = rand(pocetVstup+1, pocet1Skryta);
- Vahy1(3,:) = ones(1);
- Vahy2 = rand(pocet1Skryta+1, pocet2Skryta);
- Vahy2(pocet1Skryta+1,:) = ones(1);
- Vahy3 = rand(pocet2Skryta+1, 1);
- Vahy3(pocet2Skryta+1,:) = ones(1);
- Potencial1Skrytej=ones(1,pocet1Skryta);
- Potencial2Skrytej=ones(1,pocet2Skryta);
- PotencialVystupnej=ones(1,1);
- % inicializacia vstupov
- Vystupy0 = ones(1,3);
- Vystupy0(3)=-1;
- Vystupy1 = ones(1,pocet1Skryta+1);
- Vystupy1(pocet1Skryta+1)=-1;
- Vystupy2 = ones(1,pocet2Skryta+1);
- Vystupy2(pocet2Skryta+1)=-1;
- Vystupy3 = ones(1,1);
- chybaSiete = ones(1,1);
- VysledkySiete=ones(100,1);
- for e=1:50
- chybaSiete = 0;
- for r=1:100
- Vystupy0(1)=N_VstupSiete(r,1);
- Vystupy0(2)=N_VstupSiete(r,2);
- for i=1:pocet1Skryta
- Potencial1Skrytej(1,i)=Vystupy0(1,:)*Vahy1(:,i);
- Vystupy1(1,i)=tanh(Potencial1Skrytej(1,i));
- end;
- for i=1:pocet2Skryta
- Potencial2Skrytej(1,i)=Vystupy1(1,:)*Vahy2(:,i);
- Vystupy2(1,i)=tanh(Potencial2Skrytej(1,i));
- end;
- PotencialVystupnej(1,1)=Vystupy2(1,:)*Vahy3(:,1);
- Vystupy3(1,1)=tanh(PotencialVystupnej(1,1));
- % delty
- ChybaNaVystupe = ones(1,1);
- ChybaNaVystupe = (1-tanh(PotencialVystupnej(1,1))^2)*(N_VstupSiete(r,3)-Vystupy3);
- Chyba2Vrstva = ones(1,pocet2Skryta);
- for i=1:pocet2Skryta
- Chyba2Vrstva(1,i) = (1-tanh(Potencial2Skrytej(1,i))^2)*(Vahy3(i,1)*ChybaNaVystupe(1,1));
- end;
- pomocnySucin = ones(1,pocet1Skryta);
- Chyba1Vrstva = ones(1,pocet1Skryta);
- for i=1:pocet1Skryta
- for j=1:pocet2Skryta
- pomocnySucin(1,i)=Vahy2(i,j)*Chyba2Vrstva(1,j);
- end;
- Chyba1Vrstva(1,i) = (1-tanh(Potencial1Skrytej(1,i))^2)*pomocnySucin(1,i);
- end;
- % zmena vah
- UciaciPomer = 0.1;
- for i=1:(pocetVstup+1)
- for j=1:pocet1Skryta
- pomocnySucin(i,j)=UciaciPomer*Chyba1Vrstva(1,j)*Vystupy0(1,i);
- Vahy1(i,j)=Vahy1(i,j)+pomocnySucin(i,j);
- end;
- end;
- for i=1:(pocet1Skryta+1)
- for j=1:pocet2Skryta
- pomocnySucin(i,j)=UciaciPomer*Chyba2Vrstva(1,j)*Vystupy1(1,i);
- Vahy2(i,j)=Vahy2(i,j)+pomocnySucin(i,j);
- end;
- end;
- for i=1:(pocet2Skryta+1)
- pomocnySucin(i,1)=UciaciPomer*ChybaNaVystupe(1,1)*Vystupy2(1,i);
- Vahy3(i,j)=Vahy3(i,1)+pomocnySucin(i,1);
- end;
- VysledkySiete(r,1) = Vystupy3;
- celkovaChyba = ((N_VstupSiete(r,3)-Vystupy3(1,1))^2)*0.5;
- chybaSiete = chybaSiete + celkovaChyba;
- end;
- % celkova chyba epochy
- chybaSiete
- chyby(e,1)=chybaSiete;
- end;
- figure;
- plot(N_VstupSiete(:,3),'r');hold on;
- plot(VysledkySiete(:,1),'b');
- figure;
- plot(chyby(:,1),'g');
Add Comment
Please, Sign In to add comment