Pamuk ipliğinden biraz daha sağlam tek bağ: düşünce birliği. O da rüzgarın her an tehdit ettiği bir kandil. Düşünce birliği, düşünen insanlar arasında olur. İnsanların kaçta kaçı düşünür? Düşünenlerin kaçta kaçı karşılaşır ve açılır birbirine. -- Cemil Meriç
Salı, Şubat 28, 2012
Ordan Burdan Haberler
Cumartesi, Ocak 16, 2010
Ordan Burdan Haberler
- FLTK nın 1.10 kararlı sürümü yayınlandı. FLTK 1.3 ise son sürat gelişmesine devam ediyor ( erconun bileşenleri -widget- eklendi mesela Fl_Native_File_Chooser, Fl_Table, ve Fl_Tree_View.)
- Artık güzide memleketimde FLTK konusunda yalnız değilim. Ufuk Şanlı kardeşimiz bu konuda çalışmalar yapıyor. Hatta yeni bir FLTK bileşeni (widget) de yazdı spriteBox 1 2 ( naçizane ismini Fl_Sprite_Box olmasını buradan öneriyoruz biraz daha standart FLTK notasyonuna benzesin diye )
- Dünyanın seçkin üniversitelerinde ders dinleme imkanına sahibiz artık www.academicearth.org daha öncede benzeri bir siteden bahsetmiştik faka bu sitenin güzel tarafı dersleri indirme imkanını tanıması darısı memleketimizin seçkin üniversitelerinin başına
OpenCv nin geliştiricilerinden Gary Bradski Willow Garage da staj için duyuru yaptı aynen aktarıyoruz belki birilerine faydası dokunur
We (Willow Garage http://www.willowgarage.com a robotics institute/incubator) can use an intern in 3D model capture.
That is: using silhouettes to capture an object and combine that with structure from motion and stereo clues to create 3D object meshes out of objects. Pay is good, free food, great location, work with robots, sensors -- you can best summarize Willow as: Fun. Papers will be written, hard work but good times, see examples at http://www.willowgarage.com/pages/community/interns-and- visiting-scholars .
Who:
US, or US work visa is easiest. For more exceptional people who can stay longer than 3 months, we'll deal with helping obtain a work visa. This is an internship which means you are enrolled in some school. We might also consider doing this with a consulting arrangement for non-students, but at Intern rates. For real exceptional situations, work in place may be possible and/or student grants to fund work in place.
Timing:
Winter, Spring, Fall. Summer is very full here already with interns. Exception: Come in Spring and stay through the Summer.
Requirements:
MUST:
You must be a seasoned programmer in C++. There is no time for learning curves, we work with robots and fairly complex systems.
You must have a good understanding of geometric vision. Calibration, homography, structure from motion.
PLUS:
Computer graphics a big plus
Experience in optimization, CUDA etc also a plus.
Experience working with robots is a plus.
If you meet the "MUST" above, send application to jobs@willowgarage.com Put in the title: "Intern: 3D Model Capture"
- Google summer of code 2010 için OpenCv fikir toplanmaya başlanmış. katılmak istiyenlere duyrulur
- Ankaralı Yazılımcılar toplanıyor hemde bugün
Cumartesi, Mart 21, 2009
Ordan burdan
Source-Navigator kendiside Açık kaynak kodlu hem Linux Hemde Windows da kullanabilirsiniz.pek tabi benim anlattığımın dışındada pek çok fonksiyonu var tavsiye ederim, bir inceleyin.
2) FannTool'un En son versiyonu olan 0.93'ün yayınlanmasının üzerinden 11 ay geçmiş. İndirilme sayısı ise 2500 geçti. Ben de güzel memleketimin güzide İnsanlarından kimin haberi var böyle bir programın olduğundan diye bir google araştırması yaptım. Sonuç pek de iç açıcı değildi. Ama bu sayede Rifat Kurban'ın şu yazısına rastlamış oldum.
3) Yine Rifat'ın blogunda yapay arı kolonisi algoritması (artificial bee colony algorithm abc) bağlantısını gördüm. Daha önce Derviş karaboğa'nın Yapay Zeka Optimizasyon Algoritmaları kitabını alıp incelemiştim. Analaybildiğim kadarıyla Genetik algoritma, Karınca koloni algoritması, Yapay bağışıklık algoritması benzeri bir sistem. Ama anlayamadığım türkçe tanıtım sayfasının olmaması ...
4) Ahmet Kakıcı Yapay Sinir Ağları üzerine bir dizi güzel yazı yayınladı.
- Yapay Sinir Ağlarına Giriş
- Yapay Sinir Ağlarının Mimarisi ve Yapı Elemanları
- Yapay Sinir Ağlarının Katmanları
- Yapay Sinir Ağlarının Sınıflandırılması
FLTK için yeni bir Işıltılı şema hazırlanmış Henüz denemeye fırsatım olmadı ama görünüşü oldukça şık duruyor. Uygulamak isterseniz buyrun
Cumartesi, Mart 02, 2013
Ordan Burdan Haberler
2) Veri Madenciliği Kupası Başlıyor ;
DATA MINING CUP competition 2013
In a few weeks one of the worldwide largest data mining contest the "DATA MINING CUP" competition will start. Last year over 80 international teams from 22 countries participated.
In spring each year the prudsys AG wants to enthuse domestic and international students for intelligent data analysis (data mining) and challenge them to find the best solution to a data mining problem in competition with others.
2013 we want to follow on last year and will place two competition parts again. This year both parts are focussed on the forecast of completing order in online shops.
Besides a classic Data Mining task the second part requires to develop an agent again. More details will be be released with the start of the DMC 2013.
We are looking forward to your ideas!
start of registration: March 4, 20133) Alman Trafik İşaretleri Yarışması Başladı ;
start of DMC competition: April 3, 2013
The "German Traffic Sign Detection" Competition has started!
Results will be presented at IJCNN'13 in Dallas Texas, and FREE REGISTRATION prizes are to be won!
************************
Competition Design
************************
The "German Traffic Sign Detection Benchmark" is a multi-class detection problem in natural images. We do cordially invite you to participate. Our benchmark has the following properties:
* single-image detection problem
* images with zero to four relevant objects
* 900 images (divided in 600 training and 300 evaluation images)
* division in three categories
* industry-relevant application: traffic sign detection
The first competition information was released on December 1, 2012, when the preliminary training data was published. Interested teams are invited to download the training dataset and develop their algorithms based thereon. In February there will be a submission phase where teams are invited to upload their results on a new unannotated test dataset. It will then be possible to immediately compare all competing algorithms via our website.
4) OpenCV 2.4.4 yayınlandı; Java kısmında ve Android portunda epey bir ilerleme var, GPU üzerindeki çalışmalar hem CUDA hemde OpenCL üzerinden devam ediyor....
- OpenCV Java bindings are ported from Android to desktop Java! Actually any JVM language will work, see Tutorial for details, and Java or Scala code samples.
- Android application framework, samples, tutorials, and OpenCV Manager are improved.
- Optimizations for the new NVIDIA Kepler architecture, CARMA platform support and other new optimizations in CUDA.
- OpenCL module now builds successfully with various SDKs (from AMD, NVIDIA, Intel and Apple) and runs well on different GPUs (AMD, NVidia, Intel HD4000). A lot of new functionality has been added, tons of bugs fixed, performance of many functions has been significantly improved.
- 100+ reported problems have been resolved since 2.4.3, thanks everybody who participated!
Pazar, Kasım 11, 2012
Ordan Burdan Haberler
- Forecasting the ozone concentrations
- Pedestrian Detection
- Yapay Sinir Ağları ile Ses Tanıma
- Handwritten Digit Recognition
- Rapport de Projet VidéoBuzz
- FANN – neural networks made easy
- Diagnosis of Coronary Artery Disease Using ANN
2) FannTool'un yazımına başladığımdan beri pek çok kimse değişik vesilelerle bana ellerindeki verileri gönderdiler ve yardım istediler. Bende elimden geldiğince yardımcı olmaya çalıştım. Fakat malesef bu kişilerin çoğu yaptıkları çalışmaların sonuçlarını bana bildirmediler. Demek ki bu konularda sonuçlandırılmış bir çalışma yok. Bu durumda çalışmalar arşivde kalıp ziyan olamasın diye, bir süre sonra peyder pey bana bu verileri yollayan kişilerin adlarıyla beraber yayınlayacağım. Sonra demedi demeyin.....
3) 12 Kasım 2012 Pazartesi günü 14:00-18:00 saatleri arasında Ankara İvedik OSB Kongre ve Seminer Salonu’nda “Ar-Ge, Proje ve Teknoloji Yönetimi” konulu bir seminer var. Kaçırmayın derim. İnşallah bir aksilik çıkmaz ise bende gitmeyi planlıyorum...
4) Daha önce "Internetten AR-GE" diye duyurduğumuz.
Evet biz yataduralım elin oğlu bunuda yaptı. Hem neden yapmasınki. Bir AR-GE projesi için sınırlı sayıda ( maliyet ) insanla bir ekip kurup, Bu ekibin kısa sürede sonuça ulaşmaları umulurken. Şimdi Projeyi Internetten yarışma şeklinde duyrup ödülü koyarak - maliyet sabit - sınırsız sayıda kişi çalıştırıp. Parayı sadece başarana (en kısa sürede istenen sonuca ulaşan ekibe ) vermek, patronlarında işine gelir. Peki bizim niye işimize gelsin derseniz. Türkiye şartlarında kaç kişinin kendi tercih edeceği bir projeye dahil olabilme imkanı varki. Internetten AR-GE ile Boş vakitlerinizde yada Boşa geçirdiğiniz vakitlerde tercih edeceğiniz bir konuda çalışabilirsiniz. Kazanamsanızda size tecrübe olmuş olur zaten boşa vakit geçirecektiniz...diye anlattığımız. Konuda bir başka siteden bahsetmek istiyorum.
Kaggle :
What is Kaggle?
Kaggle is the leading platform for predictive modeling competitions.
Companies, governments and researchers present datasets and problems –
the world’s best data scientists then compete to produce the best solutions.
At the end of a competition, the competition host pays prize money in
exchange for the intellectual property behind the winning model.
Site benim görebildiğim kadarıyla oldukça başarılı. Hali hazırda ödüllü aktif yarışmalar var. Ne diyeyim gerisi size kalmış...
5) ComputerVision Hakkında Yazılımlar, Veri setleri, İşler, etkinlikler gibi pek çok şeyi bir arada bulabileceğiniz bir site Computer Vision Online
6) OpenCV 2.4.3 yayınlandı ; bu da OpenCv nin yeni sitesi ; opencv.org
...
Yazı epey uzamış, biliyorum ki yazı uzadıkça okunabilirliği azalıyor, kalanlarıda kısmetse daha sonra yazarız artık...
Çarşamba, Ekim 21, 2009
Ordan Burdan
1) Volkan Salma OpenCv de SVM kullanımı üzerine bir yazı hazırladı. Oraya kadar gitmişken Zeki Optimizasyon Teknikleri Yazı dizisine de bakmayı unutmayın ; İlk Yazı Hill Climbing üzerine. Devamınıda tez zamanda bekliyoruz.
2) İsmail Arı'nın günlüğünde tasarım ve ufak bir adres değişikliği oldu. "gunluk.ismailari.com" sitesi ismailari.com kök dizinine taşındı. Duyuruyor ve hayırlı olsun diyoruz.
3) www.GlobalEkonomi.com dan FVolkanY den daha önce bahsetmiştik , Yapay Zekalı tahmin sistemleri üzerine çalışıyordu. Yakında ürün (Forex ve Borsa Sistemleri ) satışına başlıyacak gibi hemde sonuçlar oldukça iddialı ne diyelim hayırlı olsun.
4) Bora Kardeşimizden yine yeni bir icad Casus Klavye Kimin işine yarar bilmem ama Boranın performansını ve ilerde neler yapabileceğini gösteriyor...
Cumartesi, Temmuz 02, 2011
Ordan Burdan Haberler
1 ) FLTK 1.3 kararlı sürüm olarak yayınlandı. Geliştiricilerin büyük gayretleri oldu ve FLTK 1.1 serisi üzerinden geliştirildiğinden genelde program uyumluluk sıkıntısı da çekilmeyecek. yapılanlara gelirisek;
UTF-8 desteği
2 yeni bileşen Fl_Tree ve Fl_Table
Daha işletim sisteminize uygun görünen Dosya seçiciniz Fl_Native_Filechooser
Cross-platform bir yazıcı desteği ( FLTK nın OpenGl kısmıda dahil )
2 ) OpenCv 2.3 rc yayınlandı. yayınlandı yayınlanmasına ama benim bu versiyon yayınlamalarında hoşuma gitmeyen şeyler var. Yiğidi öldür hakkını yeme demişler, Öncelikle gerçekten hemen her versiyonla birlikte pek çok yenilik geliyor. Fakat dökümantasyon çoook geriden geliyor. dökümantasyonlarda yapılan yeniliklerle ilgili bir açıklama bulmak çoğu kez mümkün olmuyor. Keza yayınlanan sürümlerin kararlılığınada genelde pek dikkat edilmiyor. Keza bundan önceki sürümü denemiş fakat problemlerle karşılaştığım için vazgeçip bir öncekine geçmiştim. Vakit buluncabunuda deneyeceğim inşallah. sonuçları o zaman duyururum. Bu sürümün yeniliklerine bakmak için buraya müracaat edin
3 ) Internetten AR-GE : Evet biz yataduralım elin oğlu bunuda yaptı. Hem neden yapmasınki. Bir AR-GE projesi için sınırlı sayıda ( maliyet ) insanla bir ekip kurup, Bu ekibin kısa sürede sonuça ulaşmaları umulurken. Şimdi Projeyi Internetten yarışma şeklinde duyrup ödülü koyarak - maliyet sabit - sınırsız sayıda kişi çalıştırıp. Parayı sadece başarana (en kısa sürede istenen sonuca ulaşan ekibe ) vermek, patronlarında işine gelir. Peki bizim niye işimize gelsin derseniz. Türkiye şartlarında kaç kişinin kendi tercih edeceği bir projeye dahil olabilme imkanı varki. Internetten AR-GE ile Boş vakitlerinizde yada Boşa geçirdiğiniz vakitlerde tercih edeceğiniz bir konuda çalışabilirsiniz. Kazanamsanızda size tecrübe olmuş olur zaten boşa vakit geçirecektiniz...
neyse konuyu fazla uzatmadan linkleri vereyim. Girin siz kendiniz bakın detaylarına. Katılmak için ekip kurarsanızda haberimiz olsun...
4) OpenCv için yeni bir kitap çıktı. C++ ve OpenCv 2 versiyon temelli olarak anlatıyor
OpenCV 2 Computer Vision Application Programming Cookbook5) Matlab Görüntülü Dersler : Daha önce İnternetten dağıtılan İlmin zekatı diye bir yazıda yazmış idim. videolectures.net ve www.academicearth.org gibi yurt dışı kaynaklı derslerden bahsetmiştim. Türkiyedede yaygın olmasada benzeri imkanlar başladı. İsmail Arı da Matlab Dersleriyle ilminin zekatını verenlere öncülük ediyor. Matlab öğrenmek gibi bir niyetim olmasada, duyurmamak olmaz diyoruz ve projenin tanıtımındaki
"Not: Proje MATLAB eğitimi ile başlamıştır fakat ileride farklı konular eklenecektir."
ifadesiyle ümitvar oluyoruz.
Çarşamba, Haziran 10, 2009
Ordan Burdan
* Liboil : yani “LIBrary of Optimized Inner Loops” iç döngülerinizi işlmecinize göre optimize ediyormuş
* Daha çok AMD işlemciler için kullanabileceğiniz
- Framewave : Derived from the AMD Performance Library, Framewave is a free and open-source collection of popular image and signal processing routines designed to accelerate application development, debugging, multi-threading and optimization on x86-class processor platforms.
- GNU Toolset Optimized for AMD Platforms
2) Halen okuyup duymadıysanız bu tarışmaya bakın : "Ruslara 850.000 € verip İstiklal Caddesinde saniyede 15.000 yüz taramak?" ve düşünün, ibret alın, örnek alın, .... ruslarda parayı alsınlar
3) Çay’da Görüntü İşleme Uygulaması : Bu sadece türkçeye tercüme edilmiş bir örnek. Aslında Üretimi yapılan pek çok tarım üründe uygulama alanları var. Bu yazıda bahsedileni hindistandan birileri yapmış, sizlerde bakın ve düşünün, ibret alın, örnek alın, .... Hindistanlılarda parayı alsınlar.
4) MetaTrader içinde YSA kullanımı üzerine yayınlanmış bir makale :
Using Neural Networks In MetaTrader Makalede kullanılan YSA tahmin edebileceğiniz gibi FANN . Bu arada bir zamanlar Volkan bu işlerle uğraşıyordu, epeydir sesi çıkmıyor. En son "Program ticari bir ürün haline geldiğinden, maalesef kodları yayınla(ya)mıyorum." demişti ama ticari ürün olarak çıktığına dairde bir yazı çıkmadı. En azından bu konuda yabancılara ortak olmaya çalışan insanlar var...
5) Ve iki yarışma :
- Time Series Forecasting Competition
- UC San Diego Data Mining Contest
Pazartesi, Ocak 27, 2014
Ordan Burdan Haberler
Lafı uzatmadan biriken haberlerden bahsedeyim
1) FannTool 'un sitesinde yazılar yayınlamaya devam ediyoruz. Bu kez kısmetinizde dış kaynaklı makaleler var. Detaylara linklereden ulaşabilirsiniz şu kadarnı söyleyeyim çok değişik alanlarda YSA uygulamaları anlatılıyor.
- Prediction of the energy values of feedstuffs for broilers using meta-analysis and neural networks
- Novel Patterns and Methods for Zooming Camera Calibration
- Estimative of ultraviolet solar radiation in Botucatu/Sp/BRAZIL Utilizing Machine Learning Tecnics
- Performance Evaluation of Lateration, KNN and Artificial Neural Networks Techniques Applied to Real Indoor Localization in WSN
- CUDA desteği gelişmeleri devam ediyor
- Android desteği artık yerleşti, Bu versiyon Android 4.4 de destekliyor.
- OpenCL desteği konusunda da gelişmeler devam ediyor
3) OpenCv kousundaki bir gelişmede OpenCv nin NaCl ve PNaCl ye port edilmesi. İşin detayını bende pek bilmiyorum ama anlaşılan o ki yazdığımız program Google Chorme üzerinde bulunduğu işletim sistemi ve donanımdan bağımsız olarak çalıştırılabilecek. Ne diyeyim güzel imkan.
4) Internet de Yayınlanan derslerden daha önce de bahsetmiştim. Bu yayınlar çok çeşitlendi. Ben bir tanesinden bahsetmek istiyorum. Santa Fe Enistüsü'nün www.complexityexplorer.org sitesinde dinamik sistemler ve Kaos üzerine verdiği giriş niteliğindeki kurs
Introduction to Dynamical Systems and Chaos
Dersler yeni başladı sayılır bekleriz...
Şimdilik bu kadar....
Perşembe, Haziran 14, 2012
Ordan Burdan Haberler
1) İlk Haberimiz Sitemiz hakkında Kod yayınlamaktan - FannTool hariç - vazgeçtik Sebebini Bilenler Bilmeyenlere Anlatsın yazımızda anlatıyoruz.
Sonuçda "Bilyoruz" iddiasında değiliz "Bilmiyoruz ve Öğrenmeye" çalışıyoruz üstelik öğrene bildiğimiz kadarını "Bilmeyenlere Anlatıyoruz." İlk iki sınıfa giren kişilerin yanlışlıkla ilgisini çekmişiz ki kusrumuza bakılmasın bir daha olmaması için gerekli tedbirleri alacağız."Bilenler Bilmeyenlere Anlatsın" anyalışındakilerle Kod paylaşımına devam edeceğiz elbette...
"Bilenler Bilmeyenlere Anlatsın" anlayışındaki insanları bekliyor ve iletişime geçmeyi arzuluyoruz.
2) Yaz Tatili Geldi, Çeşitli konularda meraklı ama dersleri yüzünden vakit bulup uğraşamadığından şikayet eden Talebeler ve Öğrencilikten Talebeliğe terfi etmek istiyenler için Büyük Fırsat. İnternet üzerinden takip edebileceğiniz dersler var artık. "Education for Everyone." Herkes için Eğitim sloganıyla çıkmış açık dersler. Görüntülü ders anlatımları ödevler sınavlar. Hatta Videolar için ingilizce alt yazıda hazırlamışlar. ( Belli dersler için topluluklar oluşturup alt yazı tercümeleri bile yapılabilir yani ) Neyse konuyu dağıtmayalım. Adersi ve dikkatimi çeken bazı dersler den örnekler vereyim
- Ana Site : www.coursera.org
- Machine Learning
- Computer Vision: The Fundamentals
- Natural Language Processing
4) Yazılım Atölyesi : Haziran Ayı programımız 16 Haziran 2012 tarihinde yapılacak ve Ramazan Uluçay tarafından Araç Takip Sistemleri anlatılacak. Bekleriz,tanışırız, görüşürüz, konuşuruz...
5) D ve C++11 Konferansı : Detaylar Burda
6) OpenCv nin yeni versiyonları çıktı ve yeni Resmi web sitesi açıldı
7) Stack Overflow (in Turkish) : Stack Overflow sitesini biliyorsunuzdur, Benzeri içerikte ama dili Türkçe olacak olan bir çalışma var. Destekliyoruz ve Desteklerinizi Bekliyoruz. Ha gayret çoğu gitti azı kaldı...
Pazartesi, Ekim 19, 2015
DLL Cehennemi
Bilgisayar dünyasında pek çok dil var. Her biri için birden fazla değişik derleyicilere sahip. Her ne kadar belli kuralları da olsa bu çeşitlilik pek çok zaman probleme sebep olmaktadır. Hatta tecrübeyle sabittir ki aynı dilde aynı derleyicinin değişik versiyonları arasında bile problemler görülebilmektedir.
Yazımızın başlığı DLL Cehennemi terminolojiye de girmiştir. DLL Hell . Bu yüzden programlamada genellikle kullanacağım dinamik kütüphaneleri derlemeye çalışırım. Yada aynı derleryici versiyonunda derlenmiş olanları bulmaya gayret ederim. Çünkü ne zaman, nerde probleme sebep olacağı belli olmaz. Sonra bir bakmışsınız boşyere çabalayıp durmuşsunuz.
Neyse geçenlerde Volkan kardeş picproje formundaki bir "Çizgi izleyen sanal robot " yarışmasından bahsetti. Uğraşmak istediğinden bahsetti , benden de bir bakmamı rica etti. Anladığım kadarıyla Çizgi izleyen robotun, gömülü yazılımcılar camiasında fiyakalı bir yeri var. Şimdi bahsedeceğimiz yarışmada basit bir simulatörle robot yapmadan bu işe girişe biliyorsunuz.
Yanlız küçük ! bir ayrıntı varmış. simulatörde algoritmanızı çalıştırmak için bir dll yazmanız gerekiyor. Bir başka küçük ayrıntıda simulatör Delphi ile yazılmış olması. Bizim de bunu kendi kullandığımız dilde yani C de yazmamız lazım.
Neyse biraz ricadan biraz da merak saikiyle DLL cehennemine daldık.
İlk aklıma gelen Delphi üzerinde çalışması gerektiğinden Borland C ile olacağına kanaat getirdim. Önce internette BorladC nin ücretsiz versiyonunu aradım. IDE olarak tabii ki emektar CodeBlock ile.
Neyse BorlandC ile yaptığım ilk denemelerden oluşan DLL ler doğrudan çakılıp kaldı. Neden olduğuna dair hiç bir fikrimde yok. Hata mesajı olmayınca nereye bakacağınızıda bilemiyorsunuz. Alınan hatanın önemli bir ip ucu olduğunu unutmayın.
İkinci denememizi mingw32 ile yaptık. Denememiz sonrasında "Algo? Yordamina ulasilamiyor" hata mesajına muhatap olduk. İlginçdir bahsi geçen fonksiyon vardı orda.
Windows için çok faydalı bir uygulama var. "Dependency Walker" bu programla exe dosyaların ihtiyaç duyduğu DLL leri listelerken. DLL içindeki yordamların adlarınıda görebiliyorsunuz.
ordan bakınca bizim "Algo1" yordamı "Algo1@24" olmuş olduğunu gördüm.
sebebini araştırdım. "Decorated Names" diye bir kavrama ulaştık. Değişik derleyiciler değişik şekilde yordamların ismini değiştiriyor. Bu problemden kurtulmak içinde Tanımlama dosyası - def- oluşturup.
linker için de def komutuyla def file bildirilir.
Bütün bu işlemleri bir çırpıda anlattığıma bakmayın epey bir araştırma gerekti. Ve en nihayetinde Artık simulatörden çağrılabilen DLL dosayasını oluşturabildik.
LineFollowerRobot from bluekid on Vimeo.
Basit de bir algoritma yazdık yukardada videosunu koyduk.
İlgilenirseniz koduda burdan indirebilirsiniz.
Cuma, Mart 03, 2017
Keras'a Giriş - 2 ( LSTM )
İlk yazımızda Kerasın kurulumunu, ve ana kullanım fonksiyonlarını anlatmıştık. Hali hazırda Kerasın içinde pek çok değişik katman bulunmaktadır. Katmanlarla ilgili kısımı okuyarak bunlara aşina olabilirsiniz. Katmanları bir birine ekleyerek kendi probleminize göre envai çeşit yapıyı tasarlayabilirsiniz.
Biz bu yazımızda Keras üzerinde LSTM ile zaman serisi tahmini yapan bir uygulama geliştireceğiz.
LSTM nedir ?
Büyük soru, başta kendim olmak üzere kafamızı çok karıştırmadan mümkün mertebe sade anlatmaya çalışalım.Açıklamaya RNN yani Recurrent Neural Networks ile başlamamız gerekiyor. Tarihi çok eskilere giden bir YSA yapısı. Aslında anlaması çok da kolay.
YSA yapımızda verdiğimiz verilerin saklı katmandan ürettiği çıktış sinyalini başa alıp bir sonraki giriş de giriş değerlerinden biri olarak kullanıyoruz.
Bu ne işimize yarıyor diye soracak olursanız pek çok durumda verilerimiz de bir sıralılık bağlantısı vardır. sadece girdiklerimiz değil bir önceki durumda çıkışa etki ediyordur. Bu tip Sıralılık örüntüsü - Sequence pattern - içeren durumlar için bu tip YSA yapıları daha başarılı bir modelleme imkanı sağlamaktadır.
Peki yıllardır bilinen bu yapı niye populer olamamış ? Bu sorunun cevabı olarak meşhuuur Vanishing gradient problem çıkıyor karşımıza. YSA eğitiminde giriş verileriyle çıkış değerleri hesaplanır. Hesaplanmış çıkış değerleri ile gerçek değerler karşılaştırılır ve farklılık bize bir meyil - gradient - Bu meyile göre geriye doğru ağ ağırlık değerlerinde güncelleme yapılır. Ağımız çok karmaşıksa geriye doğru meyil değerleri sıfırlanır. Meyil olmazsada güncelleme olmaz ve eğitilmeside durmuş olur. RNN yapısında da zaman içinde geriye doğru bağlılık var. Ağımızı eğitim açısında çok karmaşık hale getiriryor.
Bu problemin çözümü için LSTM - Long short-term memory - denen bir yapı kurulmuş.
Yukardaki akıllara ziyan şemadan da anlaşılacağı üzere çok kompleks bir sistem. Yapıda kabaca RNN hücresine birde hafıza eşlik ediyor. Bu hafıza ile bir önceki zamandan gelen bilgi alınabiliyor , bir sonrakine iletilebiliyor. Neyi alıp neyi almayacağına eğitim ile karar veriyor. Konunun teferruatları için, Ve illede iç yüzünü öğreneceğim diyenler için bir kaç link verip geçiyorum
1) Deep Learning Lecture 12: Recurrent Neural Nets and LSTMs
2) Understanding LSTM Networks
3) The Unreasonable Effectiveness of Recurrent Neural Networks
Keras da RNN katmanlar
Hali hazırda Keras kütüphanesinde 3 çeşit RNN katmanı var.ilki zaten adından anlaşılıyor. LSTM den yukarda bahsettik . sonuncusu GRU - Gated Recurrent Unit - daha LSTM benzeri yeni bir sistem
Biz LSTM i kullanacağız. ondan bahsedelim
LSTM ler genel anlamda sequence zaman sıralı şekilde gelen veriler üzerinden çalışırlar.
keras.layers.recurrent.LSTM(output_dim,eğer LSTM ilk katmansa batch_input_shape verilmesi gerekiyor ve dökümanda geçen şekli
batch_input_shape=(nb_samples, timesteps, input_dim),
return_sequences=False,....)
- nb_samples : veri sayımız, None diyede verebiliyoruz.
- timesteps : LSTM e vereceğimiz veriler zaman bazında değişen aynı türdeki veriler kaç birim zamanlık veri verilecek burda onu belirtmemiz gerekiyror
- input_dim : giriş verimizin boyutu.
- return_sequences : Kendinden sonraki katman Yine Bir LSTM olacaksa True yapılacak
- output_dim : Katman çıkış boyutu ve LSTM birim sayısı. Ağın çıkışı , eğer kendinden sonraki katman Yine Bir LSTM olacaksa (nb_samples, timesteps, output_dim) , olmayacaksa (nb_samples, , output_dim) olur.
Olmaz ama soran olursa diye buraya yazayım peşin peşin, pek çok değişik kaynakda pek çok değişik notasyon var. Kullanımında benim tercihim bu şekilde oldu.
Uygulama
Keras da LSTM uygulamamız için bir zaman serisi verisi seçtik.Daily maximum temperatures in Melbourne, Australia, 1981-1990
Avusturalya Melbornda 10 yıllık bir sürede ( 1981-1990 ) günlük olarak ölçülmüş en yüksek sıcaklıkları gösteriyor.
Yukardaki grafikden de anlaşılacağı üzre oldukça gürültülü bir sin fonksiyonu
Bizde son 5 günün en sıcaklık değerlerini kullanarak yarınki en yüksek sıcaklık değerini hesaplattırmaya çalışacağız. uygulamızda
önce verimizi pandas ile yüklüyoruz
tarih ve en yükseklik sıcaklığı tutan iki sutun var tarih bize lazım değil sadece en yüksek sıcaklık değerleriniz çekiyoruz.
YSA eğitimlerinde verileri ölçeklendirmek genellikle faydalı olur. bizde ( 0 , 1 ) arası bir ölçeklendirme işlemi uyguluyoruz.
Bu veri üzerinde kayan pencere metoduyla ağımızı eğitmek için veris seti oluşturuyoruz
Önce giriş ve çıkış verilerimizi oluşturuyoruz X ve Y olarak
ilk kutuda kayan pencere metoduyla giriş ve çıkışları seçip X ve Y adında iki listeye atıyoruz.
ikinci kutuda listeleri Martise dönüştürüyoruz.
Üçüncü kutuda giriş verimizi LSTM in istediği formata çevrimek için bir dönüşüm yapıyoruz
çünkü öncesinde giriş matris ebadı (nb_samples, timesteps) şeklinde bir giriş veri boyutunu 1 olarak verip (nb_samples, timesteps , 1 ) ebadına dönüştürüyoruz.
3645 adet verimiz var. Biz 3200 'ünü eğitim için kullanıyoruz geri kalanınıda test için bırakıyoruz.
Evet sıra geldi Ağımızı oluşturmaya
İki LSTM katmanı oluşturuyoruz ilki giriş katmanı çıkışı 64 kendinden sonra yine bir LSTM katmanına bağlanacağından return_sequence değişkenine True değerini veriyoruz.
LSTM katmanı sonrasında 0.2 lik bir Dropout katmanı koyuyoruz. Dropout en basit ifade ile sistemin ezberlemesini önlemeye çalışan bir katmandır. biraz detay isterseniz daha önceki yazılarımda kısaca bahsetmiştim ordan bakabilirsiniz.
İkinci LSTM katmanının 32 çıkışı var yine peşine Dropout katmanı kondu. Perşinede Çıkış katmanı olarak normal bir YSA katmanı -Dense- kullanıyoruz. Bir çıkış yani takip eden günün en yüksek sıcaklığı olduğundan çıkışı 1 .
model sınıfının summary fonksiyonu ile modelimizin yapısını ve katmanların çıkış ebatlarını parametre sayılarını görebiliyoruz.
Bir katmanın girişi kendinden öncekinin çıkışı olduğunda girişleri göstermesine gerek olmuyor.
Eğitime başlatıyoruz.
Eğitim sonunda Test verisinden başlangıcını rastgele seçeceğimiz 100 adet veri seçiyoruz. Bu veri için Gerçek değer. Tahmin edilen değer. Bir de sadece seçtiğimiz aralığın başlangıç değerini alıp ileriye doğru zincirleme tahmin hesaplattırarak grafikler çizdiriyoruz.
Grafik den görüklerimizi yorumlayalım.
- Tahmin ve gerçek değer arasında Müthiş bir sayısal yakınlık yok.
- Sayısal doğruluk gibi bir bekleti bu tip bir zaman serisi için pekde mümkün değildi
- Fakat Grafiklerdeki inişve çıkışlar parelellikler içeriyor. Sequence learning kavramı hatırlayın
- Zincirleme ileriye doğru tahmin ilk başta çalışsada sonrasında bir rakama sabitleniyor.
- Bu da beklediğimiz bir durum bakınız kaos teorisi
Ipython dosyasına ve veriye burdan ulaşabilirsiniz.
https://github.com/birolkuyumcu/high_temp_lstm
Bundan sonra tavsiyem, ağın yapısı , parametreleri, hatta pencere ebatları ile oynayarak ne şekilde sonuçlara ulaşılabiliyor görmenizdir.
Eleştiri, öneri yada sorularınız olursa bekleriz...














