Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. clear all
  2. close all
  3. clc
  4.  
  5. in=[1 1 1;
  6. 1 0 1;
  7. 0 1 1;
  8. 0 0 1];
  9.  
  10. out=[1;
  11. 0;
  12. 0;
  13. 0];
  14.  
  15. lr=1;
  16. max_epochs=10000;
  17. max_error=0.001;
  18.  
  19. n_in=size(in,2); %liczba wejść neuronu = 3
  20. wagi=2*rand(n_in,1)-1; %wagi początkowe, przedzial (-1,1)
  21. epochs=1; % pierwsza epoka
  22. error=1; % wartość początkowa błędu
  23. err=error; % zmienna przydatna do rysowania wykresu błedu
  24.  
  25. while error>max_error && epochs<max_epochs
  26.  
  27. y=sigmoid(in*wagi); %obliczanie aktualnego wektora wyjsciowego
  28. blad=out-y; % różnica między wartościami wzorcowymi a aktualnymi
  29. poprawka=blad.*sigmoid_der(y);
  30. wagi=wagi+lr*in'*poprawka; % korekta wektora wag
  31. error=sum(blad.^2)/length(blad); % obliczanie błędu średniokwadratowego MSE
  32. epochs=epochs+1; % kolejna epoka
  33. err(epochs)=error; % tworzenie wektora błedów w kolejnych epokach do wykresu bledu
  34. disp('epoka:')
  35. disp(epochs)
  36. disp('błąd:')
  37. disp(error)
  38. end
  39.  
  40.  
  41. figure
  42. subplot(2,1,1) %wybór wykresu -> help subplot
  43. semilogy(1:epochs,err) %wykres ze skalą logarytmiczną na osi y
  44. grid on % dodanie siatki
  45. xlabel('epoka')
  46. ylabel('błąd')
  47.  
  48.  
  49. subplot(2,1,2) % wybór wykresu
  50. %tworzenie wykresu płasczyzny x1 i x2 z podziałem na wartosci 0 i 1
  51. [X1,X2]=meshgrid(-0.1:0.1:1.1); %tworzenie siatki punktów x1 i x2 w zadanym przedziale
  52. YY=X1*wagi(1)+X2*wagi(2)+1*wagi(3); % obliczenie wyniku f.logicznej
  53. YY=sign(YY); %YY=1 gdy YY>0 oraz YY=-1 gdy YY<0
  54. contourf(X1,X2,YY,1) % wykres konturowy z wypełnieniem
  55. hold on % dzięki temu kolejny wykres nie usunie poprzedniego
  56. plot(in(:,1),in(:,2),'ro') % rysowanie punktów in kolorem czerwonym
  57. xlabel('x_1')
  58. ylabel('x_2')
  59. % ograniczenie osi wykresu
  60. xlim([-0.1,1.1])
  61. ylim([-0.1,1.1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement