top of page

Yapay Sinir Aglari Karakter Tanima Uygulamasi

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Dec 26, 2012
  • 8 min read

Bu makale iceriginde Suleyman Demirel Universitesi – Bilgisayar Muhendisligi bolumu’nun Yapay Zeka dersi icin gelistirilen Yapay Sinir Aglari uygulamasinin .Net’de C# programlama dili kullanilarak yapilmis bir ornegini paylasiyor olacagim. Yapay sinir aglari uzerinde incelemis oldugumuz formul ve bilgileri Yapay Sinir Aglari isimli makale icerisinden bilgilere ulasabilirsiniz. Bu makale ise daha cok yapay sinir aglari uzerine calisilmis bir uygulamanin kodlari bulunmaktadir. Uygulamamizi Visual Studio'nun Windows Form Application ortamini kullanarak yapiyor olacagiz. Oncesinde her bir harfin karsiligi olan bilgileri bir veritabaninda toparlayalim. Oncelikle SqlServer uzerinde Karakter isminde bir veritabani olusturuyor ve icerisine Karakter isminde bir Tablo olusturuyoruz.

          Icerisine asagidaki gibi verileri giriyoruz.

Karakter.Sql Kaynak Kodlari ;

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'

.

') AND type in (N'U')) DROP TABLE

.

GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'

.

') AND type in (N'U')) BEGIN CREATE TABLE

.

(

(1) COLLATE Turkish_CI_AS NOT NULL,

(35) COLLATE Turkish_CI_AS NOT NULL,

(35) COLLATE Turkish_CI_AS NOT NULL ) END GO INSERT

.

(

,

,

) VALUES (N'A', N'01110100011000111111100011000110001', N'00001                              ') INSERT

.

(

,

,

) VALUES (N'B', N'11110100011000111110100011000111110', N'00010                              ') INSERT

.

(

,

,

) VALUES (N'C', N'01111100001000010000100001000001111', N'00011                              ') INSERT

.

(

,

,

) VALUES (N'D', N'11100100101000110001100011001011100', N'00100                              ') INSERT

.

(

,

,

) VALUES (N'E', N'11111100001000011110100001000011111', N'00101                              ') INSERT

.

(

,

,

) VALUES (N'F', N'11111100001111110000100001000010000', N'00110                              ') INSERT

.

(

,

,

) VALUES (N'G', N'01110100011000011110100011000101110', N'00111                              ') INSERT

.

(

,

,

) VALUES (N'H', N'10001100011000111111100011000110001', N'01000                              ') INSERT

.

(

,

,

) VALUES (N'I', N'00100001000010000100001000010000100', N'01001                              ') INSERT

.

(

,

,

) VALUES (N'J', N'01110001000010000100001001010001000', N'01010                              ') INSERT

.

(

,

,

) VALUES (N'K', N'10001100101010011000101001001010001', N'01011                              ') INSERT

.

(

,

,

) VALUES (N'L', N'10000100001000010000100001000011111', N'01100                              ') INSERT

.

(

,

,

) VALUES (N'M', N'11011101011010110001100011000110001', N'01101                              ') INSERT

.

(

,

,

) VALUES (N'N', N'10001110011010110101101011001110001', N'01110                              ') INSERT

.

(

,

,

) VALUES (N'O', N'01110100011000110001100011000101110', N'01111                              ') INSERT

.

(

,

,

) VALUES (N'P', N'11110100011000111110100001000010000', N'10000                              ') INSERT

.

(

,

,

) VALUES (N'R', N'11110100011000111110101001001010001', N'10001                              ') INSERT

.

(

,

,

) VALUES (N'S', N'01110100011000001110000011000101110', N'10010                              ') INSERT

.

(

,

,

) VALUES (N'T', N'11111001000010000100001000010000100', N'10011                              ') INSERT

.

(

,

,

) VALUES (N'U', N'10001100011000110001100011000101110', N'10100                              ') INSERT

.

(

,

,

) VALUES (N'V', N'10001100011000110001100010101000100', N'10101                              ') INSERT

.

(

,

,

) VALUES (N'Y', N'10001010100010000100001000010000100', N'10110                              ') INSERT

.

(

,

,

) VALUES (N'Z', N'11111000010001000100010001000011111', N'10111                              ')

Form1.Cs Kaynak Kodlari ;

using System; using System.Drawing; using System.Data.SqlClient; using System.Windows.Forms; namespace YapaySinirAgi { public partial class Form1 : Form { public  SqlConnection con; public  SqlCommand cmd; public static System.Random rast = new System.Random(); public string[] HarfVeri = new string<23>

; public int <,>

GirisVeri=new int<23,35>

; public int <,>

CikisVeri=new int<23,5>

; public double <,>

GirisKatmanAgirlik=new double<5,35>

; public double<,>

AraKatmanY = new double<23,5>

; public double<,>

AraKatmanAgirlik = new double<5, 5>

; public double<,>

CikisY = new double<23,5>

; public double[] CikisHata = new double<5>

; public double[] AraKatmanHata = new double<5>

; public double[] GirisHata = new double<35>

; public int[] TestVeri = new int<35>

; public double[] TestAraY = new double<5>

; public double[] TestCikisY = new double<5>

; public int adim = 0,iterasyon=0; public double alfa=0.2,E; public Button[] BtnArr = new Button<35>

; public static double deger() { return rast.Next(-100, 100)/100.0; } private void Form1_Load(object sender, EventArgs e) { con = new SqlConnection(@"Data Source=SEVDANUR-PC\NANO;Initial Catalog=Karakter;Integrated Security=True"); cmd = new SqlCommand("Select KarakterAdi,KarBinary,KarCikis from Karakter", con); } public Form1() { InitializeComponent(); } private void tikla(object sender, EventArgs e) { Button buton = (Button)sender; buton.BackColor = (buton.BackColor == Color.White) ? Color.Black : Color.White; } private void button36_Click(object sender, EventArgs e) { VerileriCekme(); AgirlikDegerAtama(); listBox1.Items.Add("GirisVeri-----------------------------------------"); for (int i = 0; i < GirisVeri.GetLength(0); i++) listBox1.Items.Add(GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

+ " " + GirisVeri

); listBox1.Items.Add("Cikisveri-----------------------------------------"); for (int i = 0; i < CikisVeri.GetLength(0); i++) listBox1.Items.Add(CikisVeri

+ " " + CikisVeri

+ " " + CikisVeri

+ " " + CikisVeri

+ " " + CikisVeri

); do { adim = 0; do { listBox1.Items.Add("GirisKatmanAgirlik-----------------------------------------"); for (int i = 0; i < GirisKatmanAgirlik.GetLength(0); i++) listBox1.Items.Add(GirisKatmanAgirlik

+ " " +GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

); listBox1.Items.Add("AraKatmanAgirlik-----------------------------------------"); for (int i = 0; i < AraKatmanAgirlik.GetLength(0); i++) listBox1.Items.Add(AraKatmanAgirlik

+" "+ AraKatmanAgirlik

+" "+ AraKatmanAgirlik

+" "+ AraKatmanAgirlik

+" "+AraKatmanAgirlik

); YDegerleri(); listBox1.Items.Add("AraKatmanY-----------------------------------------"); for (int i = 0; i < AraKatmanY.GetLength(1); i++) listBox1.Items.Add(AraKatmanY

); listBox1.Items.Add("CikisY-----------------------------------------"); for (int i = 0; i < CikisY.GetLength(1); i++) listBox1.Items.Add(CikisY

); E = CikisHataMetod(); listBox1.Items.Add(" E" + E); listBox1.Items.Add(" CikisHata-----------------------------------------"); for (int i = 0; i < CikisHata.Length; i++) listBox1.Items.Add(CikisHata

); AraKatmanHataMetod(); listBox1.Items.Add(" AraKatmanHata-----------------------------------------"); for (int j = 0; j < AraKatmanHata.Length; j++) listBox1.Items.Add(AraKatmanHata

); AraKatmanYeniAgirlik(); listBox1.Items.Add("AraKatmanAgirlik-----------------------------------------"); for (int i = 0; i < AraKatmanAgirlik.GetLength(0); i++) listBox1.Items.Add(AraKatmanAgirlik

+ " " + AraKatmanAgirlik

+ " " + AraKatmanAgirlik

+ " " + AraKatmanAgirlik

+ " " + AraKatmanAgirlik

); GirisKatmanYeniAgirlik(); listBox1.Items.Add("GirisKatmanAgirlik-----------------------------------------"); for (int i = 0; i < GirisKatmanAgirlik.GetLength(0); i++) listBox1.Items.Add(GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

+ " " + GirisKatmanAgirlik

); adim++; } while (adim < 23 && E > 0.1); iterasyon++; } while (E > 0.1); } public void VerileriCekme() {   con.Open(); SqlDataReader reader = cmd.ExecuteReader(); int sayac=0; while (reader.Read()) { String a = Convert.ToString(reader["KarakterAdi"]); HarfVeri

=a; a=Convert.ToString(reader["KarBinary"]); for (int i = 0; i < GirisVeri.GetLength(1); i++) GirisVeri

= Convert.ToInt32(a.Substring(i,(1))); a = Convert.ToString(reader["KarCikis"]); for (int i = 0; i < CikisVeri.GetLength(1); i++) CikisVeri

= Convert.ToInt32(a.Substring(i, (1))); sayac++; } reader.Close(); con.Close(); } public void AgirlikDegerAtama() { for (int i = 0; i < GirisKatmanAgirlik.GetLength(0); i++) for (int j = 0; j < GirisKatmanAgirlik.GetLength(1); j++) GirisKatmanAgirlik

= deger(); for (int i = 0; i < AraKatmanAgirlik.GetLength(0); i++) for (int j = 0; j < AraKatmanAgirlik.GetLength(1); j++) AraKatmanAgirlik

= deger(); } public void YDegerleri() { for (int i = 0; i <AraKatmanY.GetLength(1); i++) { double net = 0.0; for (int j = 0; j < GirisKatmanAgirlik.GetLength(1); j++) net += (Convert.ToInt16(GirisVeri

) * GirisKatmanAgirlik

); AraKatmanY

= Math.Round((1.0 / (1.0 + Math.Round((Math.Exp(-net)),2))), 2); } for (int i = 0; i < CikisY.GetLength(1); i++) { double net = 0; for (int j = 0; j < AraKatmanAgirlik.GetLength(1); j++) net += (AraKatmanY

* AraKatmanAgirlik

); CikisY

=Math.Round((1 / (1 + Math.Exp(-Math.Round(net,2)))),2); } } public double CikisHataMetod() { double toplam = 0; int a=0; double b=0.0; for (int i = 0; i < CikisHata.Length; i++) { CikisHata

=Math.Round(( CikisY

* (1 - CikisY

) * (Convert.ToInt16(CikisVeri

) - CikisY

)),2); a=CikisVeri<0, i>

; b=CikisY

; toplam += Math.Round((Math.Pow((Convert.ToInt16(CikisVeri

) - CikisY

),2)),2); } listBox1.Items.Add( 0.5 * toplam); E=0.5 * toplam; return E; } public void AraKatmanHataMetod() { for (int j = 0; j < AraKatmanHata.Length; j++) { double toplam = 0; for (int i = 0; i <CikisHata.Length; i++) { toplam += CikisHata

* AraKatmanAgirlik

; } AraKatmanHata

=Math.Round(( AraKatmanY

* (1 - AraKatmanY

)*toplam),2); } } public void AraKatmanYeniAgirlik() { for (int i = 0; i < AraKatmanAgirlik.GetLength(0); i++) { for (int j = 0; j < AraKatmanAgirlik.GetLength(1); j++) {AraKatmanAgirlik

=Math.Round((AraKatmanAgirlik

+(alfa*CikisHata

*AraKatmanY

)),2); } } } public void GirisKatmanYeniAgirlik() { for (int i = 0; i < GirisKatmanAgirlik.GetLength(0); i++) { for (int j = 0; j < GirisKatmanAgirlik.GetLength(1); j++) { GirisKatmanAgirlik

= Math.Round((GirisKatmanAgirlik

+ (alfa * AraKatmanHata

* GirisVeri

)),2); } } } public void TestHesabi() { for (int i = 0; i < TestAraY.Length; i++) { double net = 0.0; for (int j = 0; j < GirisKatmanAgirlik.GetLength(1); j++) net += (TestVeri

* GirisKatmanAgirlik

); TestAraY

= Math.Round((1.0 / (1.0 + Math.Round((Math.Exp(-net)), 2))), 2); Console.Write(TestAraY

+" "); } for (int i = 0; i < TestCikisY.Length; i++) { double net = 0; for (int j = 0; j < AraKatmanAgirlik.GetLength(1); j++) net += (TestAraY

* AraKatmanAgirlik

); TestCikisY

= Math.Round((1 / (1 + Math.Exp(-Math.Round(net, 2)))), 2); Console.Write(TestCikisY

+ " "); } } public void Karsilastirma() { for (int i = 0; i < AraKatmanY.GetLength(0); i++) { int sayac = 0; for (int j = 0; j < AraKatmanY.GetLength(1); j++) { if (AraKatmanY

== TestAraY

) sayac++; if (CikisY

== TestCikisY

) sayac++; } listBox2.Items.Add(HarfVeri

+ "= % " + (sayac * 10)); } } private void button37_Click(object sender, EventArgs e) { TestDegerleri(); for (int i = 0; i < 35; i++) { TestVeri

= BtnArr

.BackColor == Color.Black ? 1 : 0; listBox1.Items.Add(TestVeri

); } listBox2.Items.Clear(); TestHesabi(); Karsilastirma(); } public void TestDegerleri() { BtnArr<0>

= button1;            BtnArr<1>

= button2;            BtnArr<2>

= button3; BtnArr<3>

= button4;            BtnArr<4>

= button5;            BtnArr<5>

= button6; BtnArr<6>

= button7;            BtnArr<7>

= button8            BtnArr<8>

= button9; BtnArr<9>

= button10;            BtnArr<10>

= button11;            BtnArr<11>

= button12; BtnArr<12>

= button13;            BtnArr<13>

= button14;            BtnArr<14>

= button15; BtnArr<15>

= button16;            BtnArr<16>

= button17;            BtnArr<17>

= button18; BtnArr<18>

= button19;            BtnArr<19>

= button20;            BtnArr<20>

= button21; BtnArr<21>

= button22;            BtnArr<22>

= button23;            BtnArr<23>

= button24; BtnArr<24>

= button25;            BtnArr<25>

= button26;            BtnArr<26>

= button27; BtnArr<27>

= button28;            BtnArr<28>

= button29;            BtnArr<29>

= button30; BtnArr<30>

= button31;            BtnArr<31>

= button32;            BtnArr<32>

= button33; BtnArr<33>

= button34;            BtnArr<34>

= button35; } } }

Uygulamanin Ekran Goruntusu ;

                      Keyifli Calismalar Dilerim...

Recent Posts

See All
Oracle Java Cloud Service Uygulamasi

Bir onceki Oracle Cloud Computing yazisinda bahsettigim gibi JDeveloper Oracle Cloud icin gelistirmis oldugu surumu olan Oracle JDeveloper 11g (11.1.1.6.0) ile kucuk bir uygulama gelistirip bunu oracl

 
 
 
Oracle Cloud Computing Hakkinda

Bulut bilisim konusundaki arastirmalarima devam ederken bu kez solugu Oracle Cloud Computing'de aldim. Bu makalem ve ilerleyen makalelerimde Trial versiyonu ile user tarafini pek yormayan bir yapidan

 
 
 
Nested Parallel Loops

Matrix Multiplication / Matrix Carpma islemlerini OpenMP araciligi ile paralel alanda nasil yapilabilecegini incelerken ayni zamanda for construct'larin nested parallel loops alaninda nasil calistigin

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page