Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.63 KB | None | 0 0
  1. clear
  2. format compact
  3. nntwarn off
  4.  
  5. w = -1 : 0.1 : -0.5;
  6. g = 0.5 : 0.1 : 1;
  7.  
  8. [x,y] = meshgrid(w,g);
  9. P = [x(:) y(:)]';
  10. T = P(1,:)./P(2,:);
  11.  
  12. [R, Q] = size(P);
  13. S1 = 20;
  14. S2 = 10;
  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. [dW1, dB1] = nwtan(S1, R);
  22. [dW2, dB2] = nwtan(S2, S1);
  23. [dW3, dB3] = rands(S3, S2);
  24.  
  25. A1 = tansig(W1*P, B1);
  26. A2 = tansig(W2*A1, B2);
  27. A3 = purelin(W3*A2, B3);
  28.  
  29. E = T - A3;
  30.  
  31. lr = 0.1;
  32. mc = 0.95;
  33. max_epoch = 50000;
  34. disp_freq = 100;
  35. err_goal = 0.1;
  36.  
  37. SSE = sumsqr(E);
  38.  
  39. for epoch = 1:max_epoch
  40.     if SSE < err_goal
  41.         epoch = epoch - 1; break    
  42.     end
  43.    
  44.     D3 = deltalin(A3, E);
  45.     D2 = deltatan(A2, D3, W3);
  46.     D1 = deltatan(A1, D2, W2);
  47.    
  48.     [dW1, dB1] = learnbpm(P, D1, lr, mc, dW1, dB1);
  49.     [dW2, dB2] = learnbpm(A1, D2, lr, mc, dW2, dB2);
  50.     [dW3, dB3] = learnbpm(A2, D3, lr, mc, dW3, dB3);
  51.    
  52.     W1 = W1 + dW1;
  53.     B1 = B1 + dB1;
  54.    
  55.     W2 = W2 + dW2;
  56.     B2 = B2 + dB2;
  57.    
  58.     W3 = W3 + dW3;
  59.     B3 = B3 + dB3;
  60.    
  61.     A1 = tansig(W1*P, B1);
  62.     A2 = tansig(W2*A1, B2);
  63.     A3 = purelin(W3*A2, B3);
  64.    
  65.     E = T - A3;
  66.    
  67.     SSE = sumsqr(E);
  68.    
  69.     if(rem(epoch, disp_freq) == 0)
  70.         fprintf('\n %d epoch, SSE = %g', epoch, SSE)
  71.         mesh(x,y, reshape(T, [length(x), length(y)]), 'edgecolor', 'g')
  72.         hold on
  73.         mesh(x,y,reshape(A3, [length(x), length(y)]), 'edgecolor', 'b')
  74.         hold on
  75.         mesh(x,y,reshape(A2, [length(x), length(y)]), 'edgecolor', 'y')
  76.         hold off
  77.         pause(1e-10)
  78.     end
  79. end
  80. fprintf('\n %d epoch, SSE = %g', epoch, SSE)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement