All pastes #487006 Raw Edit

Untitled

public text v1 · immutable
·published 2007-05-14 06:17 UTC
rendered paste body
 uses crt;
 const
   maxepoch=3000;
   juminput=4;
 var
   v,dv:array[0..2,1..4] of real;
   w,dw:array[0..4,1..1] of real;
   x:array[1..2] of real;
   tx:array[1..2,0..3] of real;
   z_in,z,dz_in,dz:array[1..4] of real;
   t:array[0..3] of real;
   y_in,y,dy:array[1..1] of real;
   alfa,tse,err:real;
   i,j,k,m,n,p,repx,epoch:integer;
 begin
   clrscr;
   v[0,1]:=-0.3378; v[1,1]:=0.1970;  v[2,1]:=0.3099;
   v[0,2]:=0.2771;  v[1,2]:=0.3191;  v[2,2]:=0.1904;
   v[0,3]:=0.2859;  v[1,3]:=-0.1448; v[2,3]:=-0.0347;
   v[0,4]:=-0.3329; v[1,4]:=0.3594;  v[2,4]:=-0.4861;
   w[0,1]:=-0.1401;
   w[1,1]:=0.4919;
   w[2,1]:=-0.2913;
   w[3,1]:=-0.3979;
   w[4,1]:=0.3581;
   alfa:=0.2;
   tx[1,0]:=1; tx[2,0]:=1; t[0]:=0;
   tx[1,1]:=1; tx[2,1]:=0; t[1]:=1;
   tx[1,2]:=0; tx[2,2]:=1; t[2]:=1;
   tx[1,3]:=0; tx[2,3]:=0; t[3]:=0;
   n:=2;
   p:=4;
   m:=1;
   epoch:=0;
   tse:=1;
   while (epoch<maxepoch) and (tse>0.05) do
   begin
     err:=0;
     for repx:=0 to juminput-1 do
     begin
       { Feed Forward }
       for i:=1 to n do
         x[i]:=tx[i,repx];
       for j:=1 to p do
       begin
         z_in[j]:=v[0,j];
         for i:=1 to n do
             z_in[j]:=z_in[j]+x[i] * v[i,j];
         z[j]:=1/(1+exp(-z_in[j]));
       end;
       for k:=1 to m do
       begin
         y_in[k]:=w[0,k];
         for j:=1 to p do
             y_in[k]:=y_in[k]+z[j] * w[j,k];
         y[k]:=1/(1+exp(-y_in[k]));
       end;
       { Backpropagation of error }
       for k:=1 to m do
       begin
         dy[k]:=(t[repx]-y[k]) * (y[k] * (1-(y[k])));
         for j:=1 to p do
             dw[j,k]:=alfa * dy[k] * z[j];
         dw[0,k]:=alfa * dy[k];
       end;
       for j:=1 to p do
       begin
         for k:=1 to m do
             dz_in[j]:=dy[k] * w[j,k];
         dz[j]:=dz_in[j] * (z[j] * (1-z[j]));
         for i:=1 to n do
             dv[i,j]:=alfa * dz[j] * x[i];
         dv[0,j]:=alfa * dz[j];
       end;
       { Update nilai weight dan bias }
       for k:=1 to m do
           for j:=0 to p do
               w[j,k]:=w[j,k]+dw[j,k];
       for j:=1 to p do
           for i:=0 to n do
               v[i,j]:=v[i,j]+dv[i,j];
       err:=err+sqr(t[repx]-y[1]);
     end;
     tse:=err;
     inc(epoch);
   end;
   writeln('Nilai TSE : ',tse);
   writeln('Jumlah Epoch : ',epoch);
   readkey;
 end.

 uses crt;
 const
   maxepoch=3000;
   juminput=4;
 var
   v,dv:array[0..2,1..4] of real;
   w,dw:array[0..4,1..1] of real;
   x:array[1..2] of real;
   tx:array[1..2,0..3] of real;
   z_in,z,dz_in,dz:array[1..4] of real;
   t:array[0..3] of real;
   y_in,y,dy:array[1..1] of real;
   alfa,tse,err:real;
   i,j,k,m,n,p,repx,epoch:integer;
 begin
   clrscr;
   v[0,1]:=-0.3378; v[1,1]:=0.1970;  v[2,1]:=0.3099;
   v[0,2]:=0.2771;  v[1,2]:=0.3191;  v[2,2]:=0.1904;
   v[0,3]:=0.2859;  v[1,3]:=-0.1448; v[2,3]:=-0.0347;
   v[0,4]:=-0.3329; v[1,4]:=0.3594;  v[2,4]:=-0.4861;
   w[0,1]:=-0.1401;
   w[1,1]:=0.4919;
   w[2,1]:=-0.2913;
   w[3,1]:=-0.3979;
   w[4,1]:=0.3581;
   alfa:=0.2;
   tx[1,0]:=1;  tx[2,0]:=1;  t[0]:=-1;
   tx[1,1]:=1;  tx[2,1]:=-1; t[1]:=1;
   tx[1,2]:=-1; tx[2,2]:=1;  t[2]:=1;
   tx[1,3]:=-1; tx[2,3]:=-1; t[3]:=-1;
   n:=2;
   p:=4;
   m:=1;
   epoch:=0;
   tse:=1;
   while (epoch<maxepoch) and (tse>0.05) do
   begin
     err:=0;
     for repx:=0 to juminput-1 do
     begin
       { Feed Forward }
       for i:=1 to n do
         x[i]:=tx[i,repx];
       for j:=1 to p do
       begin
         z_in[j]:=v[0,j];
         for i:=1 to n do
             z_in[j]:=z_in[j]+x[i] * v[i,j];
         z[j]:=(2/(1+exp(-z_in[j])))-1;
       end;
       for k:=1 to m do
       begin
         y_in[k]:=w[0,k];
         for j:=1 to p do
             y_in[k]:=y_in[k]+z[j] * w[j,k];
         y[k]:=(2/(1+exp(-y_in[k])))-1;
       end;
       { Backpropagation of error }
       for k:=1 to m do
       begin
         dy[k]:=(t[repx]-y[k]) * (0.5 * (1+y[k]) * (1-y[k]));
         for j:=1 to p do
             dw[j,k]:=alfa * dy[k] * z[j];
         dw[0,k]:=alfa * dy[k];
       end;
       for j:=1 to p do
       begin
         for k:=1 to m do
             dz_in[j]:=dy[k] * w[j,k];
         dz[j]:=dz_in[j] * (0.5 * (1+z[j]) * (1-z[j]));
         for i:=1 to n do
             dv[i,j]:=alfa * dz[j] * x[i];
         dv[0,j]:=alfa * dz[j];
       end;
       { Update nilai weight dan bias }
       for k:=1 to m do
           for j:=0 to p do
               w[j,k]:=w[j,k]+dw[j,k];
       for j:=1 to p do
           for i:=0 to n do
               v[i,j]:=v[i,j]+dv[i,j];
       err:=err+sqr(t[repx]-y[1]);
     end;
     tse:=err;
     inc(epoch);
   end;
   writeln('Nilai TSE : ',tse);
   writeln('Jumlah Epoch : ',epoch);
   readkey;
 end.