em3
12-03-2007, 05:42 PM
//Maksimum alti girisli tek bir nöronun agirliklarini egitebilecek bir program
//yazarak ögrenme algoritmalarini gerçekleyiniz.
//Program, kullanicinin ögrenme kuralini, aktivasyon fonksiyonunun tipini, lamda' yi (gerekiyorsa),
//egitme datasini ve belirlenen sayida egitme adiminin yürütülmesini belirlemesine izin vermelidir.
//Kurallar: Hebb, Perceptron, Delta, Widrow-Hoff.
#include<stdio.h>
#include<conio.h>
#include<math.h>
//Yazar: Erdem Halit HAKI - 4505016
//Ders: Noron Aglari ve Uygulamalari - Odev2
//SORU :
//Maksimum alti girisli tek bir nöronun agirliklarini egitebilecek bir program
//yazarak ögrenme algoritmalarini gerçekleyiniz.
//Program, kullanicinin ögrenme kuralini, aktivasyon fonksiyonunun tipini, lamda' yi (gerekiyorsa),
//egitme datasini ve belirlenen sayida egitme adiminin yürütülmesini belirlemesine izin vermelidir.
//Kurallar: Hebb, Perceptron, Delta, Widrow-Hoff.
main()
{
int i,j,giris_sayisi,giris_eleman_sayisi,egitme_adim_s ayisi,sec,sec1;
long int x[6][6][1];
float u[6][1][1],fu[6][1][1],w[7][6][1],d[6],r[6];
//kullanilacak ogrenme kuralinin secilmesi
tekrar :
clrscr();
printf("\nlutfen kullanmak istediginiz ogrenme kuralini (a, b, c veya d olarak) seciniz\n\n");
printf("\na)..Hebb ogrenme kurali\n");
printf("\nb)..Perceptron ogrenme kurali\n");
printf("\nc)..Delta ogrenme kurali\n");
printf("\nd)..Widrow-Hoff ogrenme kurali\n");
printf("\nseciminiz = ");
sec=getch();
clrscr();
switch(sec)
{
/////////////////////////////////////Hebb ogrenme kurali//////////////////////////////////////////////////////////////
case 'a':
{
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n\n");
printf("\nLutfen aktivasyon fonksiyonunun tipini belirleyiniz\n\n");
printf("\na)..Bipolar surekli f(u)=[2/(1+exp(-lamda.u))]-1\n\n");
printf("\nb)..Bipolar binary f(u)=sgn(u)= +1 , u>0\n");
printf(" -1 , u<0\n");
printf("\nseciminiz = ");
sec1=getch();
if (sec1==97||sec1==65) /////bipolar sürekli/////
{
clrscr();
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar surekli\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
fu[i][0][0]=2/(1+exp(-1*u[i][0][0]))-1 ;
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+fu[i][0][0]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
if(sec1==98||sec1==66) /////bipolar binary/////
{
clrscr();
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar binary\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
if(u[i][0][0]>0)
fu[i][0][0]=1;
else
fu[i][0][0]=-1;
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+fu[i][0][0]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
}break;
/////////////////////////////////////Perceptron ogrenme kurali//////////////////////////////////////////////////////////////
case 'b':
{
printf("\n-->Perceptron ogrenme kurali ile bir noronun agirliklarinin egitilesi\n\n");
printf("\nLutfen aktivasyon fonksiyonunun tipini belirleyiniz\n\n");
printf("\na)..Bipolar surekli f(u)=[2/(1+exp(-lamda.u))]-1\n\n");
printf("\nb)..Bipolar binary f(u)=sgn(u)= +1 , u>0\n");
printf(" -1 , u<0\n");
printf("\nseciminiz = ");
sec1=getch();
if (sec1==97||sec1==65) /////bipolar sürekli/////
{
clrscr();
printf("\n-->Perceptron ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar surekli\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
fu[i][0][0]=2/(1+exp(-1*u[i][0][0]))-1 ;
r[i]=d[i]-1*fu[i][0][0];
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+r[i]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
if(sec1==98||sec1==66) /////bipolar binary/////
{
clrscr();
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar binary\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
if(u[i][0][0]>0)
fu[i][0][0]=1;
else
fu[i][0][0]=-1;
r[i]=d[i]-1*fu[i][0][0];
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+r[i]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
}break;
/////////////////////////////////////Delta ogrenme kurali//////////////////////////////////////////////////////////////
case 'c':
{
printf("\n-->Delta ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar surekli \n\n");
printf("\n f(u)=[2/(1+exp(-lamda.u))]-1\n\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
fu[i][0][0]=2/(1+exp(-1*u[i][0][0]))-1 ;
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+(1/8)*(d[i]-fu[i][0][0])*(1-(fu[i][0][0]*fu[i][0][0]))*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}break;
/////////////////////////////////////Widrow-Hoff ogrenme kurali//////////////////////////////////////////////////////////////
case 'd':
{
printf("\n-->Widrow-Hoff ogrenme kurali ile bir noronun agirliklarinin egitilesi\n\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
r[i]=d[i]-u[i][0][0];
printf("r%d degeri= ",i+1);
printf("%.3f\t\n\n",r[i]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+(1/4)*r[i]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}break;
defaultrintf("\n\nHatali Secim...! a,b,c veya d seceneklerinden biri secilebilir.");
goto tekrar;
}
getch();
return(0);
//yazarak ögrenme algoritmalarini gerçekleyiniz.
//Program, kullanicinin ögrenme kuralini, aktivasyon fonksiyonunun tipini, lamda' yi (gerekiyorsa),
//egitme datasini ve belirlenen sayida egitme adiminin yürütülmesini belirlemesine izin vermelidir.
//Kurallar: Hebb, Perceptron, Delta, Widrow-Hoff.
#include<stdio.h>
#include<conio.h>
#include<math.h>
//Yazar: Erdem Halit HAKI - 4505016
//Ders: Noron Aglari ve Uygulamalari - Odev2
//SORU :
//Maksimum alti girisli tek bir nöronun agirliklarini egitebilecek bir program
//yazarak ögrenme algoritmalarini gerçekleyiniz.
//Program, kullanicinin ögrenme kuralini, aktivasyon fonksiyonunun tipini, lamda' yi (gerekiyorsa),
//egitme datasini ve belirlenen sayida egitme adiminin yürütülmesini belirlemesine izin vermelidir.
//Kurallar: Hebb, Perceptron, Delta, Widrow-Hoff.
main()
{
int i,j,giris_sayisi,giris_eleman_sayisi,egitme_adim_s ayisi,sec,sec1;
long int x[6][6][1];
float u[6][1][1],fu[6][1][1],w[7][6][1],d[6],r[6];
//kullanilacak ogrenme kuralinin secilmesi
tekrar :
clrscr();
printf("\nlutfen kullanmak istediginiz ogrenme kuralini (a, b, c veya d olarak) seciniz\n\n");
printf("\na)..Hebb ogrenme kurali\n");
printf("\nb)..Perceptron ogrenme kurali\n");
printf("\nc)..Delta ogrenme kurali\n");
printf("\nd)..Widrow-Hoff ogrenme kurali\n");
printf("\nseciminiz = ");
sec=getch();
clrscr();
switch(sec)
{
/////////////////////////////////////Hebb ogrenme kurali//////////////////////////////////////////////////////////////
case 'a':
{
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n\n");
printf("\nLutfen aktivasyon fonksiyonunun tipini belirleyiniz\n\n");
printf("\na)..Bipolar surekli f(u)=[2/(1+exp(-lamda.u))]-1\n\n");
printf("\nb)..Bipolar binary f(u)=sgn(u)= +1 , u>0\n");
printf(" -1 , u<0\n");
printf("\nseciminiz = ");
sec1=getch();
if (sec1==97||sec1==65) /////bipolar sürekli/////
{
clrscr();
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar surekli\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
fu[i][0][0]=2/(1+exp(-1*u[i][0][0]))-1 ;
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+fu[i][0][0]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
if(sec1==98||sec1==66) /////bipolar binary/////
{
clrscr();
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar binary\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
if(u[i][0][0]>0)
fu[i][0][0]=1;
else
fu[i][0][0]=-1;
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+fu[i][0][0]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
}break;
/////////////////////////////////////Perceptron ogrenme kurali//////////////////////////////////////////////////////////////
case 'b':
{
printf("\n-->Perceptron ogrenme kurali ile bir noronun agirliklarinin egitilesi\n\n");
printf("\nLutfen aktivasyon fonksiyonunun tipini belirleyiniz\n\n");
printf("\na)..Bipolar surekli f(u)=[2/(1+exp(-lamda.u))]-1\n\n");
printf("\nb)..Bipolar binary f(u)=sgn(u)= +1 , u>0\n");
printf(" -1 , u<0\n");
printf("\nseciminiz = ");
sec1=getch();
if (sec1==97||sec1==65) /////bipolar sürekli/////
{
clrscr();
printf("\n-->Perceptron ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar surekli\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
fu[i][0][0]=2/(1+exp(-1*u[i][0][0]))-1 ;
r[i]=d[i]-1*fu[i][0][0];
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+r[i]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
if(sec1==98||sec1==66) /////bipolar binary/////
{
clrscr();
printf("\n-->Hebb ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar binary\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
if(u[i][0][0]>0)
fu[i][0][0]=1;
else
fu[i][0][0]=-1;
r[i]=d[i]-1*fu[i][0][0];
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+r[i]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}
}break;
/////////////////////////////////////Delta ogrenme kurali//////////////////////////////////////////////////////////////
case 'c':
{
printf("\n-->Delta ogrenme kurali ile bir noronun agirliklarinin egitilesi\n");
printf("\n-->Aktivasyon fonksiyonunun tipi Bipolar surekli \n\n");
printf("\n f(u)=[2/(1+exp(-lamda.u))]-1\n\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
fu[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
fu[i][0][0]=2/(1+exp(-1*u[i][0][0]))-1 ;
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
printf("\nfu%d degeri= ",i+1);
printf("%.3f\t\n\n",fu[i][0][0]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+(1/8)*(d[i]-fu[i][0][0])*(1-(fu[i][0][0]*fu[i][0][0]))*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}break;
/////////////////////////////////////Widrow-Hoff ogrenme kurali//////////////////////////////////////////////////////////////
case 'd':
{
printf("\n-->Widrow-Hoff ogrenme kurali ile bir noronun agirliklarinin egitilesi\n\n\n");
printf("Giris sayisini(x) belirtiniz (max 6) \n\n");
scanf("%d",&i);
giris_sayisi=i;
printf("\nGiris vektorlerinin eleman sayisini belirtiniz (max 6) \n\n");
scanf("%d",&j);
giris_eleman_sayisi=j;
//giris vektorlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{printf("\n%d. giris vektorunu giriniz\n\n",i+1);
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%d",&x[i][j][0]);
}
}
//istenilen cikis degerlerinin girilmesi
for(i=0;i<giris_sayisi;i++)
{
printf("\n%d. istenilen cikis degerlerini giriniz\n\n",i+1);
scanf("%f",&d[i]);
}
//baslangic agirlik vekrorunun girilmesi
printf("\nLutfen baslangic agirlik vektorunu giriniz\n\n");
for(j=0;j<giris_eleman_sayisi;j++)
{
scanf("%f",&w[0][j][0]);
}
//egitme adim sayisinin girilmesi
printf("\nLutfen egitme adim sayisini giriniz\n\n");
scanf("%d",&egitme_adim_sayisi);
//yeni agirliklarin hesaplanmasi
u[0][0][0]=0;
for(i=0;i<egitme_adim_sayisi;i++)
{
for(j=0;j<giris_eleman_sayisi;j++)
{
u[i][0][0]=u[i][0][0]+w[i][0][j]*x[i][j][0];
}
printf("\nu%d degeri= ",i+1);
printf("%.3f\t\n",u[i][0][0]);
r[i]=d[i]-u[i][0][0];
printf("r%d degeri= ",i+1);
printf("%.3f\t\n\n",r[i]);
printf("yeni agirliklar (w%d) :\n\n",i+2);
for(j=0;j<giris_eleman_sayisi;j++)
{
w[i+1][j][0]=w[i][j][0]+(1/4)*r[i]*x[i][j][0];
printf("%.3f\t\n",w[i+1][j][0]);
}
}
}break;
defaultrintf("\n\nHatali Secim...! a,b,c veya d seceneklerinden biri secilebilir.");
goto tekrar;
}
getch();
return(0);