Keras ve Tensorflow Nedir?
Bu yazımızda temel derin öğrenme kavramlarından olan Keras ve Tensorflow’un özelliklerinden bahsedip ardından örnek kodlar yazacağız. İyi okumalar..
TensorFlow
Açık kaynak kodlu bir deep learning kütüphanesidir. Esneyebilen yapısı ile, tek bir API ile platforma bağlı olmadan hesaplamaları, bir veya birden fazla CPU, GPU kullanarak dağıtmanızı sağlar. Temelinde Python kullanılarak geliştirilen bu framework, günümüzde Python ‘ın yanısıra Javascript, R, Swift gibi birçok dili desteklemektedir. Her ne kadar Deep Learning uygulamaları bünyesinde kullanımı görülse de TensorFlow başlıca çok daha geniş bir alanı kapsamaktadır.
Uzun yıllardır geliştirilen TensorFlow kodları ilk defa 2015 Kasım ayında Google tarafından herkesin erişimine açıldı. Bu adımdan sonra kullanım alanı oldukça genişlemiştir. TensorFlow.js sayesinde internet üzerinden yapay zeka ile ilgili bir çok işlemi yapabilirsiniz ayrıca makine öğrenmesi modellerini tarayıcınız üzerinde geliştirebilir veya eğitebilirsiniz.
TensorFlow.js içinde bazı demolar otomatik olarak gelmektedir.. Bunlardan yapmak istediğiniz çalışmaya göre en uygun olanını seçerek kullanabilirsiniz.
TensorFlow çeşitli alanlarda kullanıma sahip bir uygulamadır. Yaygın olarak kullanılmasındaki en önemli sebeplerden birisi farklı platformlara göre hazırlanmış TensorFlow kütüphanelerinin olmasıdır.
Teachable Machine ile Tensorflow Çalışması
Teachable Machine, makine öğrenimi modellerini hızlı, kolay ve herkes tarafından kolay ulaşılabilir hale getirilmiş web tabanlı bir araçtır.
Siteyi açtığımızda karşımıza çıkan ekrandan ilk olarak sağ üstte bulunan Get Started’e giriyoruz. Ardından çıkan ekranda görselleri kullanarak veri seti eğiteceğimiz için Image Project kısmına giriyoruz.
Bu kısımda farklı nesnelere ait resimleri girerek bilgisayara öğretilmesini ardından ayırt edilmesini sağlayacağız.
İlk olarak, hipopatam ve goril olarak iki adet veri seti oluşturduk. İlk kısımda farklı açılardan 40 adet hipopotam resmi yükledim. Ardından 41 adet farklı açılardan goril resmi yükledim.
İkinci kısımda ise Model Training butonuna basarak eğitme işlemini tamamlıyoruz.
Eğitim işlemi tamamlanınca hipopotamın resmini alarak sınıflandırmanın doğruluğunu test ettik. Sınıf 1'in %100 çıkması eğitimin başarılı olduğunu gösteriyor.
Bu eğittiğimiz modele ait kodları “export” butonuna basarak tensorflow ve keras projelerimizde kullanmak için javascript formatında ulaşabiliriz.
Keras Nedir?
Python ile Derin Öğrenme(Deep Learning) araştırma ve geliştirmesinin temelini oluşturan en iyi platform TensorFlow’dur. Çok iyi kütüphanedir, ancak derin öğrenme modelleri oluşturmak için doğrudan kullanılması zor olabilir. Keras , TensorFlow’un üzerinde bir dizi derin öğrenme modeli oluşturmanın kullanışlı bir yolunu sağlayan Python kütüphanesidir.
Araştırma ve geliştirme için derin öğrenme modellerinin olabildiğince hızlı ve basit uygulanması için geliştirilmiştir.
Python 2.7 veya 3.5 üzerinde çalışır ve temel frameworklere göre GPU’lar ve CPU’lar üzerinde sorunsuz bir şekilde çalışabilir.
Keras’ın odak noktası model oluşturmaktır. Ana model türü, doğrusal bir katman olan dizi olarak isimlendirilir. Bir dizi oluşturursunuz ve hesaplamanın gerçekleştirilmesini istediğiniz sırayla ona katmanlar eklersiniz.Bir kez tanımlandıktan sonra, modeliniz tarafından gerçekleştirilecek hesaplamayı optimize etmek için temel çerçeveden yararlanan modeli derlersiniz. Bu aşama verilere uygun olmalıdır. Bu, bir seferde tek bir veri yığınıyla veya tüm öğrenme modelini derleyerek yapılabilir. Burası tüm hesaplamanın gerçekleştiği yerdir. Eğitildikten sonra, modelinizi yeni veriler üzerinde tahminler yapmak için kullanabilirsiniz.
Halihazırda çalışan bir Python ortamınız varsa Keras’ı yüklemek kolaydır. Ayrıca sisteminizde zaten bir TensorFlow kurulumuna sahip olmalısınız.
Keras-TensorFlow İlişkisi
TensorFlow’un derin bir öğrenme platformuna dönüşümü bir anda gerçekleşmedi. Öncelikle, TensorFlow bir dizi görevde veri akışı programlaması için sembolik bir matematik kitaplığı olarak ortaya çıktı. Bu nedenle, TensorFlow’un başlangıçtaki görevi, salt bir makine öğrenimi kitaplığı değildi. Amaç, bu verimli yapının üzerine inşa edilen özel makine öğrenimi algoritmalarının kısa sürede yüksek doğrulukla eğitilebilmesi için verimli bir matematik kitaplığı oluşturmaktı.
Ancak, düşük seviyeli API’lerle tekrar tekrar sıfırdan modeller oluşturmak pek ideal değildi. Bu nedenle, ayrı bir üst düzey derin öğrenme kitaplığı olarak Keras geliştirildi. Keras, TensorFlow, Microsoft Cognitive Toolkit, Theano veya PlaidML gibi farklı kitaplıkların üzerinde çalışabilmesine rağmen, TensorFlow insanların Keras ile birlikte kullandığı en yaygın kitaplıktı ve hala da durum böyle devam ediyor.
Keras ile Uygulamalı Derin Öğrenme
Örnek bir Python kodlaması ile başlayalım. Öncelikle kodumuza gerekli kütüphanelerimizi ekleyelim. Ben Anaconda üzerinden Spyder kullandım. Bu kod İstanbul 100 endeksinin artıp azalmasını tahmin etmeye çalışacak. Dolayısıyla veri setindeki çıktı için 0 olması endeksin düşeceği 1 olması ise yükseleceği anlamına gelmektedir.
Önce gerekli kütüphaneleri ekliyoruz. Bu kütüphaneler tensorflow temel kütüphanesi, numpy kütüphanesi, veri setini okuyabilmek adına pandas kütüphanesi ve Dense kütüphaneleri.
Eğitim için hiçbir zaman veri setinin tamamı kullanılmaz. Bilgisayarın öğrenip öğrenmediğini anlayabilmek için aynı veri seti içerisinden daha önce kendisine göstermediğimiz veri seti ile test etmemiz gerekir. Veri setini %70 eğitim %30 test için rastgele ayırılıyor.
Ardından bu veri setlerini çok boyutlu diziler olarak işlem yapabilmek adına numpy türüne çeviriliyor.
Veri setinde girdi ve çıktıları değişkenler ile temsil etmek için aşağıdaki gibi atama yapılıyor.
Ağımıza 3 adet katman eklemek istiyoruz. Bu katmanlar Dense olarak isimlendiriliyor.
İlk katmanda 15 adet nöron bulunuyor ve relu aktivasyon fonksiyonu kullanılıyor. İkinci gizli katmanda 7 adet nöron bulunuyor ve yine aynı aktivasyon fonksiyonu kullanılıyor. Üçüncü gizli katmanda 1 adet nöron bulunmakta ve sigmoid aktivasyon fonksiyonu kullanılıyor.
Buradaki örnekte 5 satır veri olarak ayarlanmıştır. Eğitim aşağıdaki şekildeki gibi başlayıp epoch bazında bilgi verip sonlanacaktır. Her Epoch’ta doğruluğun ve kaybın nasıl değiştiği takip edilebilir.
Eğitim tamamlandıktan sonra test verisi ile eğitimin doğruluğu görmemeiz gerekir. Son olarak eğitim veri setinde elde ettiğimiz doğruluk 1 üzerinden 0,72 iken test için kontrol etmek için aşağıdaki kodları çalıştırılır.
Veri setinin doğruluğunun 0,67 gibi bir değer olduğu görüldü.
Sonraki yazımızda görüşmek üzere…