Kütüphane: | GYYSA.dll |
Son sürüm: | 1.3.1 |
Örneklenen diller: | C++, VB6, C#, VB.NET |
Dosya: | tıklayınız |
İlgili yazılar: Geri Yayılımlı Yapay Sinir Ağları, GYYSA.dll İle OCR
Önemli not: Çok fazla nöron içeren ağlarda, hata fonksiyonu çok fazla yerel minimum içereceğinden, hata sıfıra yaklaştırılırken çok daha küçük adımlar kullanılmalıdır. Bu amaçla, adım büyüklüğünü ayarlayan öğrenme katsayısının, fazla sayıda nöronu olan ağlarda çok küçük seçilmesi gerekmektedir...
Bundan yaklaşık 2 yıl önce VB6 ile bir YSA sınıfı yazıp bu sınıfı kullanarak birkaç uygulama yapmış ve uygulamalar ile ilgili bilgileri yayınlamıştım. Ziyaretçilerden konu ile ilgili, bir kısmı beni aşan pek çok soru geldi. Bu konu ile ilgilenenler için geri yayılımlı yapay sinir ağı konusunda ihtiyaç duyacakları fonksiyonların tümünü barındıran bir kütüphane hazırladım.
Geri yayılımlı yapay sinir ağı modeli ile ilgili bilgi edinmek için, şu an içinde bulunduğunuz kategorideki diğer yazılara göz atabilirsiniz.
Kütüphane yardımıyla istediğiniz kadar katmandan(tabi ki en az 2) ve her katmanda istediğiniz kadar nörondan oluşan yapay sinir ağları oluşturabilirsiniz. Oluşturduğunuz ağları eğitebilir, eğitilmiş ağları dosyalara kaydedip, sonraki bir zamanda eğitilmiş halleri ile geri yükleyebilirsiniz.
Dosyanın içinde, başlangıçta en sık denenen örnek olan XOR işlemi ile YSA'yı eğiten, C++ ve VB6 dilleriyle yazdığım 2 örnek var. Kütüphaneyi kullanmadan önce C++ Kütüphaneleri Ve Diller Arası Uyumsuzluklar yazısını okumanız faydalı olabilir.
Kütüphanenin içindeki fonksiyonlar:
BOOL AgOlustur(byte* KatmanDizisi, byte KatmanSayisi) BOOL Egit(float OgrenmeKatsayisi, float Momentum, byte* GirisDizisi, byte* CikisDizisi) void Hatirla(byte* GirisDizisi, float* CikisDizisi) BOOL AgiKaydet(char* DosyaYolu) BOOL AgiYukle(char* DosyaYolu)
KatmanDizisi: Katman dizisi her katmanda kaç nöron bulunacağını bildirecek olan tamsayılardan oluşmalıdır. Fonksiyona bu dizinin ilk elemanının referansı gönderilmelidir.
KatmanSayisi: Kaç tane katman oluşturulacağını belirler. Bu değer, katman dizisinin boyutu kadar olmalıdır.
Fonksiyon başarılı olursa true, başarısız olursa false dödürür.
OgrenmeKatsayisi: Ağın öğrenme hızını ayarlayan sayıdır ve 0 ile 1 arasında değerler alır.
Momentum: Dendrit ağırlıkları güncellenirken, önceki değişimin yeni değişime hangi oranda ekleneceğini belirleyen katsayıdır. Bu katsayı öğrenme sürecine, hareket eden bir cismin sahip olduğu momentum etkisini kazandırır. Katsayı sıfırdan büyük girildiğinde, dendrit ağırlıklarında yapılacak değişim ani olarak artıp azalmaz. Böylece yerel minimumlara rastlandığında öğrenme sürecinin aniden yavaşlaması veya durması engellenir. Parametreye 0 veya 1 arasında değerler verilebilir. Öğrenme sürecinde momentum etkisi istenmiyorsa 0 değeri verilmelidir.
GirisDizisi: Sadece 0 veya 1lerden oluşan tamsayı dizisi. Fonksiyona dizinin ilk elemanının referansı gönderilmelidir.
CikisDizisi: Verilen giriş ile döndürülmek istenen çıkış dizisidir. Bu dizi yine sadece 0 veya 1lerden oluşan tamsayı dizisi olmalıdır. Fonksiyona dizinin ilk elemanının referansı gönderilmelidir.
Fonksiyon başarılı olursa true, başarısız olursa false döndürür.
GirisDizisi: Sadece 0 veya 1lerden oluşan tamsayı dizisi. Fonksiyona dizinin ilk elemanının referansı gönderilmelidir.
CikisDizisi: Bu parametreye çıkışları tutacak olan dizinin ilk elemanının referansı gönderilmelidir. Dizinin elemanları kütüphane tarafından doldurulur.
DosyaYolu: Ağın kaydedileceği dosyanın konumunu belirler. Tam yol yazılabileceği gibi sadece dosya adı da yazılabilir. Ağ dosyaya düz metin formatında kaydedilir. Fonksiyona, dosya yolunu bildirecek olan karakter dizisinin ilk harfinin adresi yollanmalıdır.
Fonksiyon başarılı olursa true, başarısız olursa false dödürür.
DosyaYolu: Ağın bilgilerinin yer aldığı dosyanın konumunu belirler. Tam yol yazılabileceği gibi sadece dosya adı da yazılabilir. Fonksiyona, dosya yolunu bildirecek olan karakter dizisinin ilk harfinin adresi yollanmalıdır.
Fonksiyon başarılı olursa true, başarısız olursa false dödürür.
Uyumsuzlukları elimden geldiği kadar gidermeye çalıştım. Yine de kütüphaneyi başka dillerde kullanırken tür uyumsuzluklarının yol açabileceği problemlerle karşılaşmamak için C++ tipleri ile eşit boyutlarda tipler kullandığınızdan emin olun...
hocam öncelikle tskler emeğiniz için. Ama ben C dosyaından çıkan c kodlarını dev c da çalıştıramadım sorun nedir acaba....Kolay gelsin
Paketteki C++ kodunu Code::Blocks ile yazıp 'GNU GCC Compiler' ile derlemiştim. Kodlar Dev C++'ta problem yaratıyor olabilir.
Kütüphane ile ilgili açıklamalar bu sayfada mevcut, kod örnekleri de elinizde. Kodu düzenlemeyi veya yeniden yazmayı deneyebilirsiniz.
kodlara nerden nasıl ulaşırız acaba?
Kütüphanenin kodlarını kastediyorsanız, kaynak kodlar dağıtıma dahil değil. Kütüphanenin kullanımı ile ilgili çeşitli dillerde yazılmış örnek kodlar ise kütüphane ile birlikte indirilebilir.
hocam merhaba, programa bir data ekleyip, onu eğitmemiz mümkün mü bu kütüphaneyle. lütfen yardımınızı bekliyorum
Merhaba,
Nöron ve katman sayısını ihtiyacınıza göre ayarlayıp kendi ağınızı oluşturarak istediğiniz veri ile eğitebilirsiniz. Başlamak için dosyadaki örnek kodlardan faydalanabilirsiniz.