Tekrar merhaba herkese. Karşınıza çıkma ihtimali olan Matlab'da Yapay sinir ağı uygulamalarını paylaştığımı söylemiştim.

(Bkz: 2 Girişli Sinüsoidal Fonksiyon) Bu çalışmada XOR probleminin hem örneksel işlemlerle hem de toplu işlemlerle gerçekleştirilen Matlab uygulaması yer almaktadır. Diğer çalışmalarda olduğu gibi bu uygulamada da Matlab fonksiyonları kullanılmadan döngüler yardımıyla sonuca ulaşılmıştır. 

XOR (eXclusive OR) Kapısı, girişindeki işaretler birbirinden farklı olduğu zaman çıkış olarak 1 verir, diğer tüm hallerde 0 verir ve    a xor b = a'b+ab'      şeklinde yazılır.

 

a

b

Çıkış (y)

0

0

0

0

1

1

1

0

1

1

1

0

Tablo 1.1 XOR Kapısının doğruluk tablosu

 

1- Örneksel işlemlerle gerçekleştirilen XOR probleminin m-file kodları:

clear all

w1=rand;  w2=rand; w3=rand; w4=rand;  w5=rand;

wa=rand;  wb=rand;

a=1; b=1;

x1=[0 0 1 1 ];

x2=[0 1 0 1 ]; 

d=[0 1 1 0 ];

alfa=0.03;

E=1;

s=0;

while (E~=0)

   s=s+1;

   for i=1:4

      A(i)=w1*x1(i)+w2*x2(i)+a*wa;

      if A(i)>0 C(i)=1;

      else C(i)=0;

    end

      B(i)=w3*x1(i)+w4*x2(i)+C(i)*w5+b*wb;

      else y(i)=0;      if B(i)>0 y(i)=1;

    end

      e(i)=d(i)-y(i); 

     

      delta_w1=e(i)*x1(i)*w5;

      delta_w2=e(i)*x2(i)*w5;

      delta_w3=e(i)*x1(i);

      delta_w4=e(i)*x2(i);

      delta_w5=e(i)*C(i);

      delta_wa=e(i)*w5;

      delta_wb=e(i);

    

      w1=w1+alfa*delta_w1;

      w2=w2+alfa*delta_w2;

      w3=w3+alfa*delta_w3;

      w4=w4+alfa*delta_w4;

      w5=w5+alfa*delta_w5;

      wa=wa+alfa*delta_wa;

      wb=wb+alfa*delta_wb;

   end

   E=sumsqr(e);

   w=[w1 w2 w3 w4 w5 wa wb];

end

plot(y)

 

 

2- Toplu işlemlerle gerçekleştirilen XOR probleminin m-file kodları:

clear all

w1=rand; w2=rand; w3=rand; w4=rand; w5=rand;

wa=rand; wb=rand;

a=1; b=1;

x1=[0 0 1 1 ];

x2=[0 1 0 1 ];

d=[0 1 1 0 ];

alfa=0.03;

E=1;

s=0;

while (E~=0)

   s=s+1;

   for i=1:4

      A(i)=w1*x1(i)+w2*x2(i)+a*wa;

      if A(i)>0 C(i)=1;

      else C(i)=0;

  end

      B(i)=w3*x1(i)+w4*x2(i)+C(i)*w5+b*wb;

      if B(i)>0 y(i)=1;

      else y(i)=0;

   end

      e(i)=d(i)-y(i); 

       

      delta_w1(i)=e(i)*x1(i)*w5;

      delta_w2(i)=e(i)*x2(i)*w5;

      delta_w3(i)=e(i)*x1(i);

      delta_w4(i)=e(i)*x2(i);

      delta_w5(i)=e(i)*C(i);

      delta_wa(i)=e(i)*w5;

      delta_wb(i)=e(i);

   end

      w1=w1+alfa*sum(delta_w1);

      w2=w2+alfa*sum(delta_w2);

      w3=w3+alfa*sum(delta_w3);

      w4=w4+alfa*sum(delta_w4);

      w5=w5+alfa*sum(delta_w5);

      wa=wa+alfa*sum(delta_wa);

      wb=wb+alfa*sum(delta_wb);

   E=sumsqr(e);

   w=[w1 w2 w3 w4 w5 wa wb];

end

plot(y) 

 

 

Eğer kodları Matlab'da yazar çalıştırırsanız her iki yöntemin de ekran çıktsının aynı olduğunu görürsünüz. Umarım faydası olmuştur, bir sonraki YSA uygulamasında görüşmek dileğiyle... 

ysa, matlab, 'matlab ysa', 'yapay sinir ağları', 'xor kapısı ve ysa', 'xor gate ysa', 'özel veya kapısı matlab', 'xor gate özel veya kapısı', 'matlab ysa uygulamaları', 'yapay zeka', 'ysa uygulaması', 'artificial neual networks', 'iki girişli tek çıkışlı', 'sinüsoidal fonksiyon', 'sinüzoydal fonksiyon ysa matlab', 'iki giriş tek çıkışlı sinüsoidal fonksiyonun ysa uygulaması', 'matlab uygulamaları', 'ysa uygulamaları', 'yapay sinir ağı uygulamaları',  'Ali Osman Gökcan', 'Ali Osman Hoca', 'Ali Osman','ali osman matlab'

Powered by Ali Osman Gkcan 2014 - All Rights Reserved.