Advertisement
pabloducato

Ryszard_Mariusz

May 15th, 2018
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.67 KB | None | 0 0
  1. clear all;
  2. nntwarn off;
  3. format compact;
  4.  
  5. file = dlmread ('data2.txt');
  6.  
  7. P = file(:, 1:34)';
  8. T = file(:, 35)';
  9.  
  10. size(P)
  11. size(T)
  12.  
  13. clear file;
  14.  
  15.  
  16. [R,Q] = size(P);
  17. [S3,Z] = size(T);
  18.  
  19. max_epoch = 1000; %liczba epok uczenia 20000 - 40000 nie zwiekszac, tylko zmniejszac np 500
  20. err_goal = 0.25; %blad docelowy
  21. disp_freq=100; %czestotliwosc wyswietlania nie uzywac!!!
  22. error = [];
  23.  
  24. S1 = [4:1:20]; %2:1:30
  25. S2 = S1;
  26.  
  27. lr = [0.7 0.9 0.01 0.001 0.0001 0.00001];
  28.  
  29. for ind_S1=1:length(S1),
  30.     for ind_S2=1:ind_S1,
  31.         for ind_lr=1:length(lr),
  32.             [W1,B1] = nwtan(S1(ind_S1), R); %wagi
  33.             [W2,B2] = nwtan(S2(ind_S2), S1(ind_S1)); %wagi
  34.             [W3,B3] = rands(S3, S2(ind_S2)); % 1 bo S1 ma wymiar 1
  35.            
  36.             correct = 0;
  37.            
  38.             for epoch=1:max_epoch,
  39.                 A1 = tansig(W1*P,B1);
  40.                 A2 = tansig(W2*A1,B2);
  41.                 A3 = purelin(W3*A2,B3);
  42.                
  43.                 E = T -A3;
  44.            
  45.                 D3 = deltalin(A3,E);
  46.                 D2 = deltatan(A2,D3,W3);
  47.                 D1 = deltatan(A1,D2,W2);
  48.            
  49.                 [dW1,dB1] = learnbp(P,D1,lr(ind_lr));
  50.            
  51.                 W1 = W1 + dW1;
  52.                 B1 = B1 + dB1;
  53.            
  54.                 [dW2,dB2] = learnbp(A1,D2,lr(ind_lr));
  55.                 W2 = W2 + dW2;
  56.                 B2 = B2 + dB2;
  57.            
  58.                 [dW3,dB3] = learnbp(A2,D3,lr(ind_lr));
  59.                 W3 = W3 + dW3;
  60.                 B3 = B3 + dB3;
  61.            
  62.                 SSE = sumsqr(E);
  63.                 error = [error SSE];
  64.            
  65.                 if SSE < err_goal,
  66.                     epoch = epoch - 1;
  67.                     break;
  68.                 end
  69.                
  70.                 correct = 100*(1-sum((abs(T-A3)>=.5)')/length(T));
  71.                
  72.                
  73.                 if(rem(epoch,disp_freq)==0)
  74.                     %plot([1:length(T)],T,'r',[1:length(T)],A3,'g')
  75.                     %[S1(ind_S1) S2(ind_S2) lr(ind_lr) epoch SSE (100*(1-sum((abs(T-A3)>=.5)')/length(T)))]
  76.                     %pause(1e-100)
  77.                 end
  78.                
  79.                 if(correct == 100)
  80.                     break,
  81.                 end
  82.                
  83.                
  84.             end
  85.            
  86.             rekord = [S1(ind_S1) S2(ind_S2) lr(ind_lr) SSE correct];
  87.            
  88.             rekord
  89.            
  90.             fid = fopen('pabloducato.txt','a+');
  91.             for i=1:size(rekord,1),
  92.                 fprintf(fid, '%g\t', rekord(i,:));
  93.             end
  94.            
  95.             fprintf(fid, '\r\n');
  96.             fclose(fid);
  97.                
  98.            
  99.         end
  100.     end
  101. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement