Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. %vicevrstva sit
  2. clc
  3. clear all
  4. close all
  5.  
  6. poc_vzoru = 10;
  7. pom_in = imread('c1.bmp');
  8. in = zeros(poc_vzoru, size(pom_in, 1) * size(pom_in, 2));
  9.  
  10. for vzor = 1:poc_vzoru %nacteni trenovacich vzoru
  11. pom_in = imread(['c' num2str(vzor) '.bmp']);
  12. in(vzor,:) = pom_in(:);
  13. end
  14.  
  15. out = eye(poc_vzoru)*2-1;
  16.  
  17. pocet_IN = size(in, 2); %pocet neuronu ve vstupni vstve
  18. pocet_HID = 30;
  19. pocet_HID2 = 30; %pocet neuronu ve skryte vstve
  20. pocet_OUT = size(out, 2); %pocet neuronu ve vystupni vstve
  21.  
  22.  
  23. %inicializace vah
  24. w0 = ones(1, pocet_IN); %vstupni vrstva neurony jedna jednickova vaha
  25. w1 = (rand(pocet_IN + 1, pocet_HID)*2-1)/100; %skryta vrstva vahy + prah neurony
  26. w2 = (rand(pocet_HID + 1, pocet_HID2)*2-1)/100; %vystupni vrstva vahy + prah neurony
  27. w3 = (rand(pocet_HID2 + 1, pocet_OUT)*2-1)/100;
  28.  
  29.  
  30. Ec = inf; %chyba site
  31. alfa = 0.005; %koeficient uceni
  32. iterace = 1; %pocet iteraci
  33. max_iterace = 10000; % max iteraci
  34. Ec_it = zeros(1, max_iterace);
  35. Ec_max = 0.1;
  36. v0vystup = zeros(1, pocet_IN); %vystup vstupni vrstvy
  37. v1vystup = zeros(1, pocet_HID); %vystup skryte vrstvy
  38. v2vystup = zeros(1, pocet_HID2); %vystup vystupni vrstvy
  39. v3vystup = zeros(1, pocet_OUT);
  40. delta1 = zeros(1, pocet_HID); %pomocna chyba
  41. delta2 = zeros(1, pocet_HID2);
  42. delta3 = zeros(1, pocet_OUT); %pomocna chyba
  43.  
  44. while (iterace < max_iterace)
  45. Ec = 0;
  46. for vzor = 1:poc_vzoru
  47. %vystup vstupni vrstvy
  48. v0vystup = w0.*in(vzor, :);
  49. v1vystup = tanh(([v0vystup 1] * w1));
  50. v2vystup = tanh(([v1vystup 1] * w2));
  51. v3vystup = tanh(([v2vystup 1] * w3));
  52. %vypocet chyby
  53.  
  54. delta3 = out(vzor, :) - v3vystup;
  55.  
  56. %zpetne sireni chyby
  57. delta2 = delta3 * w3( 1:end - 1, :)';
  58. delta1 = delta2 * w2( 1:end - 1, :)';
  59.  
  60. %uprava vah
  61. w1 = w1 + [v0vystup 1]' * alfa * (delta1 .* (1 - v1vystup.^2));
  62. w2 = w2 + [v1vystup 1]' * alfa * (delta2 .* (1 - v2vystup.^2));
  63. w3 = w3 + [v2vystup 1]' * alfa * (delta3 .* (1 - v3vystup.^2));
  64.  
  65. Ec = Ec + 0.5 *(delta3 * delta3');
  66. end
  67. Ec_it(iterace) = Ec;
  68. if (Ec_it(iterace) < Ec_max)
  69. break;
  70. end
  71. iterace = iterace + 1;
  72. end
  73.  
  74. figure
  75. plot(Ec_it(10:iterace - 1));
  76. Ec_it(iterace - 1)
  77.  
  78. %aktivace
  79. obr = 5;
  80. obr_pom = 0;
  81. for vzor = 1:poc_vzoru
  82. pom_in = reshape(in(vzor, :), size(pom_in, 1), size(pom_in, 2));
  83. pom_test = imnoise(pom_in, 'salt & pepper', 0.3);
  84. m_stare(1, :) = pom_test(:);
  85.  
  86. %vystup vstupni vrstvy,
  87. v0vystup = w0 .* m_stare;
  88. v1vystup = tanh(([v0vystup 1] * w1));
  89. v2vystup = tanh(([v1vystup 1] * w2));
  90. v3vystup = tanh(([v2vystup 1] * w3));
  91. % vykresleni
  92. if(mod(vzor - 1, obr) == 0)
  93. figure
  94. colormap(gray);
  95. obr_pom = 0;
  96. end
  97. obr_pom = obr_pom + 1;
  98. subplot(3, obr, obr_pom)
  99. image(pom_in * 255);
  100. subplot(3, obr, obr_pom + obr)
  101. image(pom_test * 255);
  102. subplot(3, obr, obr_pom + 2 * obr)
  103. bar(v3vystup);
  104. axis('tight');
  105. % pom_nove = reshape(m_nove, size(pom_in, 1), size(pom_in, 2));
  106. % image(pom_nove * 255);
  107.  
  108. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement