Yapay Sinir Ağı Eğitim Veri Seti Oluşturmak – Matematiksel Model 2

Bu yazıda matematiksel Modeli verilmiş 2 girişli ve 1 çıkışlı sistem üzerinden veri seti oluşturma ve bu veri seti ile YSA eğitimi üzerinde durulacaktır. Denklem (1)’de X ve Y giriş, Z ise çıkışı göstermektedir.Adsız

[-1 +1] aralığında rast gele  veri girişleri ve bu girişlere ait çıkış değerlerini oluşturmak için kullanılan MATLAB kodu ve örnek giriş çıkış veri seti grafiği aşağıda verilmiştir.

  1. function X = INPUT_SET(g_X, g_In, UPPER_LIMIT, LOWER_LIMIT)
  2. X = (UPPER_LIMIT - LOWER_LIMIT) * rand(g_In, g_X) + LOWER_LIMIT;

 

  1. function Y = SQUARE_SUM_EQ(X)
  2. Y = sum(X.^2);

untitled

Veri seti oluşturulması ve oluşturulan veri seti ile gerçekleştirilen YSA eğitimine ilişkin MATLAB kodları ve yukarıda gösterilen veri setine ilişkin sonuçlar aşağıda gösterilmiştir.

untitled

untitled

  1. g_In = 2;
  2. g_X = 100;
  3. UPPER_LIMIT = 1;
  4. LOWER_LIMIT = -1;
  5. X = INPUT_SET(g_X, g_In, UPPER_LIMIT, LOWER_LIMIT)
  6. Y = SQUARE_SUM_EQ(X)
  7. figure, plot3(X(1, :), X(2, :), Y, 'o')
  8. %axis([ LOWER_LIMIT UPPER_LIMIT min(Y) max(Y)])
  9. xlabel('X')
  10. ylabel('X')
  11. zlabel('Y')
  12. grid on;
  13. %% Agırlıklar oluşturuldu
  14. g_Layer_Cell = 5;
  15. [n_X n_Samples] = size(X);
  16. [n_Y n_Samples] = size(Y);
  17. [w_1 b_1 w_2 b_2] = WEIGTH_CREATE(X, Y, g_Layer_Cell, n_X, n_Y);
  18. g_L = 0.5;
  19. g_ITER = 5000;
  20. E_n = zeros(1, g_ITER);
  21. for n_i = 1 : g_ITER
  22. for n_j = 1 : n_Samples
  23. [ol_out hl_out] = MLP(X(:, n_j), w_1, b_1, w_2, b_2);
  24. [error E_n(n_i)] = FITNESS_VALUE(E_n(n_i), Y(:, n_j), ol_out);
  25. [d_w_1 d_b_1 d_w_2 d_b_2] = BACK_PROPAGATION(X(:, n_j), w_2, hl_out, error);
  26. [w_1 b_1 w_2 b_2] = PARAM_UPDATE(w_1, b_1, w_2, b_2,...
  27. d_w_1, d_b_1, d_w_2, d_b_2, g_L);
  28. end
  29. end
  30. figure, plot(E_n)
  31. X_TEST = 2 * rand(n_X, g_X) - 1;
  32. Y_TEST = SQUARE_SUM_EQ(X_TEST)
  33. [n_X n_Samples] = size(X_TEST);
  34. [n_Y n_Samples] = size(Y_TEST);
  35. E_n_t = 0;
  36. for n_j = 1 : n_Samples
  37. [ol_out(n_j) hl_out] = MLP(X_TEST(:, n_j), w_1, b_1, w_2, b_2);
  38. [error_t(n_j) E_n_t] = FITNESS_VALUE(E_n_t, Y_TEST(n_j), ol_out(n_j));
  39. end
  40. figure, plot3(X_TEST(1, :), X_TEST(2, :), Y_TEST, 'ro')
  41. hold on;
  42. plot3(X_TEST(1, :), X_TEST(2, :), ol_out, 'bo')
  43. %axis([ LOWER_LIMIT UPPER_LIMIT min(Y) max(Y)])
  44. xlabel('X')
  45. ylabel('X')
  46. zlabel('Y')
  47. grid on;
  48. figure, plot(error_t)
  49. xlabel('X')
  50. ylabel('Error')

 

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

 

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

 

  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 [d_w_1 d_b_1 d_w_2 d_b_2]= BACK_PROPAGATION(X, w_2, hl_out, error)
  2. d_b_2 = error;
  3. d_w_2 = error * hl_out;
  4. s = error * w_2 .* hl_out .* (1- hl_out);
  5. d_b_1 = s;
  6. d_w_1 = s * X';
  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;

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.