{ BACKPROP.PAS } { Backpropagation algoritmus na vykreslovanie grafiky. } { } { Author: ¥ubo¹ Saloky } { Datum: 01.01.1996 http://www.trsek.com } program Backpropagation_algoritmus; uses Crt,MainGr; var Vaha:array[2..3,0..2,0..2] of real; { vrstva, zdroj. por., ciel. por. } Hodnota:array[1..3,0..2] of real; { vrstva, por. cislo vo vrstve } Chyba:array[1..3,0..2] of real; { sp„tne propagovanie chyby } i,j,k:integer; Vystup,x:real; procedure Ucenie; begin { ----- aplikacia vzoru ----- } for i:=0 to 2 do begin x:=Hodnota[1,0]*Vaha[2,i,0]+ { i,0 / 0,i } Hodnota[1,1]*Vaha[2,i,1]+ Hodnota[1,2]*Vaha[2,i,2]; Hodnota[2,i]:=1/(1+Exp(-x)); end; x:=Hodnota[2,0]*Vaha[3,i,0]+ Hodnota[2,1]*Vaha[3,i,1]+ Hodnota[2,2]*Vaha[3,i,2]; Hodnota[3,0]:=1/(1+Exp(-x)); { ----- chyba ----- } Chyba[3,0]:=(Vystup-Hodnota[3,0]) * Exp(-x) / (1+Exp(-x)) / (1+Exp(-x)); for i:=0 to 2 do Vaha[3,i,0]:=Vaha[3,i,0] + Chyba[3,0] * Hodnota[3,0]; for i:=0 to 2 do begin x:=Hodnota[2,0]*Vaha[3,i,0]+ Hodnota[2,1]*Vaha[3,i,1]+ Hodnota[2,2]*Vaha[3,i,2]; Chyba[2,i]:=Chyba[3,0] * Vaha[3,i,0] * Exp(-x) / (1+Exp(-x)) / (1+Exp(-x)); end; for i:=0 to 2 do for j:=0 to 2 do Vaha[2,i,j]:=Vaha[2,i,j] + Chyba[2,j] * Hodnota[2,j]; {!!!!!} WriteLn(#13#10#13#10'----- Vahy od vstupu do skrytej vrstvy: -----'); for i:=0 to 2 do begin for j:=0 to 2 do Write(Vaha[2,i,j]:0:5,' '); WriteLn; end; WriteLn('----- Vahy zo skrytej vrstvy do vystupu: -----'); for i:=0 to 2 do Write(Vaha[3,i,0]:0:5,' '); WriteLn(#13#10'----- Vystup -----'#13#10,Hodnota[3,0]:0:5); end; BEGIN for i:=2 to 3 do for j:=0 to 2 do for k:=0 to 2 do Vaha[i,j,k]:=Random(100)/30; for k:=0 to 599 do begin { 100 iteracii pre kazdu vzorku } CakajNaVOI; ClrScr; case k div 100 of 0:begin Hodnota[1,0]:=1; Hodnota[1,1]:=-1;Hodnota[1,2]:=1; Vystup:=1; Ucenie; end; 1:begin Hodnota[1,0]:=-1;Hodnota[1,1]:=-1;Hodnota[1,2]:=1; Vystup:=-1;Ucenie; end; 2:begin Hodnota[1,0]:=1; Hodnota[1,1]:=1; Hodnota[1,2]:=-1;Vystup:=1; Ucenie; end; 3:begin Hodnota[1,0]:=-1;Hodnota[1,1]:=1; Hodnota[1,2]:=-1;Vystup:=-1;Ucenie; end; 4:begin Hodnota[1,0]:=1; Hodnota[1,1]:=-1;Hodnota[1,2]:=-1;Vystup:=1; Ucenie; end; 5:begin Hodnota[1,0]:=-1;Hodnota[1,1]:=-1;Hodnota[1,2]:=-1;Vystup:=1; Ucenie; end; end; end; END.