FANN YSA Kütüphanesi C++ Builder Uygulamalarına Nasıl Adapte Edilir?

Yilmaz Yoru
Deep Learning Türkiye

--

Merhaba, daha önceden İngilizce olara yayınladığım bir yazıyı burada Türkçeye çevirmek faydalı olur diye düşündüm. Bu yazıda, C++ Builder’da Steffen Nissen tarafından geliştirilen FANN Kütüphanesini kullanarak nasıl uygulamalarınıza nasıl Yapay Sinir Ağı özelliği eklenir, onu anlatmaya calışacağım. FANN kütüphanesi GNU/C , C ++ Builder, Delphi gibi 20'den fazla programlama dilini destekler. FANN Kütüphanesi ile ilgili olarak ayrıntılı bilgiye buradan ulaşabilir ve FANN kaynak dosyalarını web sayfalarından indirebilirsiniz.

1: Nissen’in resmi web sayfasından FANN Kütüphanesi paketini indirin. Bu paket bin dosyalarını, cmake dosyalarını, veri kümelerini, örnekleri, src klasöründeki kaynak kodlarını ve bazı örnekleri içerir.

2: Yeni bir C ++ Builder Uygulaması oluşturun. 32 piksel yüksekliğinde ve iki Buton’a (TEST, TRAIN) sahip bir Panel (Panel1) ekleyin. Paneli Form1'in alt kısmına hizalayın. Forma bir Memo (Memo1) ekleyin ve Client görünüm yapın. Memo alanı bizim görsel çıktı yerimiz olacak.

3: FANN_Test klasörünü oluşturun ve “FANN_” ön ekiyle tüm proje dosyalarını aşağıda listelendiği gibi bu klasöre kaydedin;

4: Şimdi uygulamamızla derlemek için kaynak dosyalara ihtiyacımız var. Paketi açın, “src” klasörünü bu klasörden bu FANN_Test klasörüne kopyalayın. RADS / C ++ Builder / Delphi IDE boyutunuzu küçültün ve src klasörünü FANN_Test’ten “FANN_Project1.exe” üzerindeki Proje Yöneticisine sürükleyin. IDE “Seçilen dosyaları projeye eklemek ister misiniz…” diye sorduğunda, Evet ile onaylayın.

5: Başlıklar için bir FANN klasörü eklememiz gerekiyor. IDE menüsünden Project -> Options ->C++ Compiler->Directories and Conditionals->Include dahil et seçeneğine gidin. FANN_Test klasörümüzde bulunan “src/include” klasörünü buraya ekleyin

6: Şimdi FANN_Unit1.cpp’imize bir başlık ekleyebilirsiniz. #İnclude “FANN_Unit1.h” satırının altına bu #include “floatfann.h” ekleyin.
Şimdi tüm adımları öndemli yaptık, orijinal dosyalarda herhangi bir ince ayar veya değişiklik yapmadan orijinal kaynakları ile FANN kitaplığını projemize ekledik. FANN kaynak dosyalarının ve header dosyalardaki C kodları nedeniyle birçok C derleyicisi için adapte etmek çok uyumlu ve kolay.

7: Şimdi her şeyin yolunda olup olmadığını test edelim. Tüm projeleri Projeler -> Tüm Projeleri Oluştur menüsünden oluşturun. Başarı ise her şey yolunda demektir. hatalar varsa lütfen yukarıdaki adımları kontrol edin.

8. Şimdi TRAIN ve TEST etmek için örnek test kodlarımızı yapıştıralım. Form görünümüne gidin ve TRAIN düğmesine çift tıklayın ve içine aşağıdaki kodu ekleyin

/*TRAINING FANN (from the simple_train.c) */
const unsigned int num_input = 2;
const unsigned int num_output = 1;
const unsigned int num_layers = 3;
const unsigned int num_neurons_hidden = 3;
const float desired_error = (const float) 0.001;
const unsigned int max_epochs = 500000;
const unsigned int epochs_between_reports = 1000;
struct fann *ann = fann_create_standard(num_layers, num_input, num_neurons_hidden, num_output);
fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
fann_train_on_file(ann, “xor.data”, max_epochs, epochs_between_reports, desired_error);
fann_save(ann, “xor_float.net”);
fann_destroy(ann);
Memo1->Lines->LoadFromFile(“xor_float.net”);
Memo1->Lines->Add(“Training done on xor_float.net file as above”);

Diğer işletim sistemleri için derlemek istiyorsanız, yukarıda yaptığımız gibi proje seçeneklerine include arama yolu “src / include” eklemeyi unutmayınız. Mekanizmasını anlamak için lütfen örnekleri, diğer komutları ve FANN Kitaplığı seçeneklerini kontrol edin.

TEST düğmesine çift tıklayın ve içine aşağıdaki kodu ekleyin

/*- TESTING FANN (from the simple_test.c) — */
char s[255];
fann_type *calc_out;
fann_type input[2];
struct fann *ann = fann_create_from_file(“xor_float.net”);
input[0] = -1;
input[1] = 1;
calc_out = fann_run(ann, input);
Memo1->Lines->Add(“”);
Memo1->Lines->Add(“Testing … “);
sprintf(s, “xor test (%f,%f) -> %f\n”, input[0], input[1], calc_out[0]);
Memo1->Lines->Add(s);
Memo1->Lines->Add(“Testing Done ! “);
fann_destroy(ann);

Artık C++ Builder uygulamanızda bir YSA desteği var. Bu basit örnekle, burada verilen linkleri inceleyerek kendinize özel YSA destekli bir uygulama oluşturabilirsiniz.

Orjinal İngilizce yazıya buradan ulaşabilirsiniz,

--

--

Yilmaz Yoru
Deep Learning Türkiye

Mechanical Engineer (MSc PhD), Developer, Founder of Esenja Company, Embarcadero C++ Builder MVP