Facebook
From Social Partdridge, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 246
  1. clear all
  2. clf
  3. nntwarn off
  4. format compact
  5.  
  6.  
  7. P=-1:.1:-.5;                                                                           
  8.  
  9. T=[-.9602 -.5770 -.0729 .3771 .6405 .6600];
  10.  
  11. S1 = 13;
  12. S2 = 7;
  13.  
  14. [R,Q]=size(P);                                                                         
  15. [S3,Q]=size(T);
  16.  
  17. [W1, B1]=nwtan(S1,R);                                                          
  18. [W2, B2]=nwtan(S2,S1);                                                 
  19. [W3, B3]=rands(S3,S2);
  20.  
  21. disp_freq=100;
  22. max_epoch=20000;
  23. err_goal=1e-30;                                                                        
  24. lr=0.01;                                                                               
  25. error=[];
  26.  
  27.  
  28.  
  29. for epoch=1:max_epoch,                                                         
  30.    
  31.     A1=tansig(W1*P,B1);
  32.     A2=tansig(W2*A1,B2);
  33.     A3=purelin(W3*A2,B3);
  34.     E = T - A3;                                                                
  35.  
  36.     D3=deltalin(A3,E);
  37.     D2=deltatan(A2,D3,W3);
  38.     D1=deltatan(A1,D2,W2);                                                                                       
  39.    
  40.     [dW1, dB1]=learnbp(P,D1,lr);                       
  41.     [dW2, dB2]=learnbp(A1,D2,lr);                      
  42.     [dW3, dB3]=learnbp(A2,D3,lr);
  43.    
  44.     W1=W1+dW1;
  45.     W2=W2+dW2;
  46.     W3=W3+dW3;
  47.     B1=B1+dB1;
  48.     B2=B2+dB2;
  49.     B3=B3+dB3;
  50.    
  51.     SSE=sumsqr(E);
  52.     error=[error SSE];
  53.    
  54.     if SSE<err_goal,
  55.         epoch=epoch-1;
  56.         break
  57.     end
  58.    
  59.     if(rem(epoch,disp_freq)==0)
  60.         epoch
  61.         SSE
  62.         plot(P,A3,'r',P,T,'g');
  63.         pause(1e-500);
  64.     end
  65. end