IRIS (Süsen Çiçeği) Veritabanı Kullanılarak Yapay Sinir Ağı Eğitimi

Bu yazıda süsen çiçieği (Iris) türlerinden (Setosa, Versicolor, Verginica) oluşturulan veri tabanı  kullanılarak yapay sinir ağı eğitimi gerçekleştirilmiştir. Eğitim esnasında her bir türden 30 adet örnek kullanılmış ve eğitimde kullanılan örnekler ile birlikte toplam 50’şer örnekler ile test edilmiştir. Eğitim sonucunda elde edilen hata değeri aşağıda gösterilmiştir. Eğitim geriye yayılım algoritması ile gerçeklenmiştir.

untitled

Setosa, Versicolor, Verginica türlerine ait veriler için tıklayınız….

Eğitime ait MATLAB kodları aşağıda verilmiştir.

  1.  
  2. load IRIS_Setosa.mat;
  3. load IRIS_Versicolor.mat;
  4. load IRIS_Verginica.mat;
  5.  
  6. g_In = 4;
  7. g_X = 30;
  8.  
  9. X = [IRIS_Setosa(1 : g_In, 1)...
  10.      IRIS_Versicolor(1 : g_In, 1)...
  11.      IRIS_Verginica(1 : g_In, 1)];
  12. Y = [IRIS_Setosa(5, 1)...
  13.      IRIS_Versicolor(5, 1)...
  14.      IRIS_Verginica(5, 1)];
  15.  
  16. for n_i = 2 : g_X
  17.     X = [X IRIS_Setosa(1 : g_In, n_i)...
  18.      IRIS_Versicolor(1 : g_In, n_i)...
  19.      IRIS_Verginica(1 : g_In, n_i)];
  20.     Y = [Y IRIS_Setosa(5, n_i)...
  21.          IRIS_Versicolor(5, n_i)...
  22.          IRIS_Verginica(5, n_i)];
  23.  
  24. end
  25.  
  26. %% Agırlıklar oluşturuldu
  27. g_Layer_Cell = 10;
  28. [n_X n_Samples] = size(X);
  29. [n_Y n_Samples] = size(Y);
  30. [w_1 b_1 w_2 b_2] = WEIGTH_CREATE(X, Y, g_Layer_Cell, n_X, n_Y);
  31.  
  32. g_L = 0.1;
  33. g_ITER = 100000;
  34. E_n = zeros(1, g_ITER);
  35. for n_i = 1 : g_ITER      
  36.     for n_j = 1 : n_Samples
  37.         [ol_out hl_out] = MLP(X(:, n_j), w_1, b_1, w_2, b_2);
  38.         [error E_n(n_i)] = FITNESS_VALUE(E_n(n_i), Y(:, n_j), ol_out);
  39.         [d_w_1 d_b_1 d_w_2 d_b_2] = BACK_PROPAGATION(X(:, n_j), w_2, hl_out, error);
  40.         [w_1 b_1 w_2 b_2] = PARAM_UPDATE(w_1, b_1, w_2, b_2,...
  41.                                           d_w_1, d_b_1, d_w_2, d_b_2, g_L);
  42.        
  43.     end
  44. end
  45. figure, plot(E_n)
  46.  
  47. X_TEST = [IRIS_Setosa(1 : g_In, : )...
  48.      IRIS_Verginica(1 : g_In, : )...
  49.      IRIS_Versicolor(1 : g_In, : )];
  50. Y_TEST = [IRIS_Setosa(5, : )...
  51.      IRIS_Verginica(5, : )...
  52.      IRIS_Versicolor(5, : )];
  53.  
  54.  
  55. [n_X n_Samples] = size(X_TEST);
  56. [n_Y n_Samples] = size(Y_TEST);
  57.  
  58. E_n_t = 0;
  59. for n_j = 1 : n_Samples
  60.     [ol_out(n_j) hl_out] = MLP(X_TEST(:, n_j), w_1, b_1, w_2, b_2);
  61.     [error_t(n_j) E_n_t] = FITNESS_VALUE(E_n_t, Y_TEST(n_j), ol_out(n_j));
  62. end
  63.  
  64. figure, plot(error_t)
  65. xlabel('X')
  66. ylabel('Error')

  1. function [d_w_1 d_b_1 d_w_2 d_b_2]= BACK_PROPAGATION(X, w_2, hl_out, error)
  2.  
  3.  d_b_2 = error;
  4.  d_w_2 = error * hl_out;
  5.  
  6.  s = error * w_2 .* hl_out .* (1- hl_out);
  7.  d_b_1 = s;
  8.  d_w_1 = s * X';

  1. function [error E_n] = FITNESS_VALUE(E_n, Outputs, ol_out)
  2.  error = Outputs - ol_out;
  3.  E_n = E_n + error^2/2;

  1. function [ol_out hl_out] = MLP(X, w_1, b_1, w_2, b_2)
  2.  
  3.  hl_sum = w_1 * X + b_1;
  4.  hl_out = logsig(hl_sum);
  5.  ol_out = hl_out' * w_2 +b_2;

  1. function [w_1 b_1 w_2 b_2] = PARAM_UPDATE(w_1, b_1, w_2, b_2,...
  2.  d_w_1, d_b_1, d_w_2, d_b_2, g_L)
  3.  w_1 = w_1 + g_L * d_w_1;
  4.  w_2 = w_2 + g_L * d_w_2;
  5.  b_1 = b_1 + g_L * d_b_1;
  6.  b_2 = b_2 + g_L * d_b_2;

  1. function [w_1 b_1 w_2 b_2] = WEIGTH_CREATE(X, Y, g_Layer_Cell, n_X, n_Y)
  2.  
  3.  w_1 = rand(g_Layer_Cell, n_X);
  4.  b_1 = rand(g_Layer_Cell, 1);
  5.  w_2 = rand(g_Layer_Cell, 1);
  6.  b_2 = rand(n_Y, 1);

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.