Deep Learning with Python: A Comprehensive Guide to Chollet’s Framework

Giriş

Derin öğrenme (deep learning), günümüzün en heyecan verici ve hızlı gelişen alanlarından biridir. Özellikle yapay zeka ile ilgili uygulamalar, görüntü tanıma, ses tanıma gibi pek çok alanda devrim yaratmıştır. Python, bu alandaki en popüler programlama dillerinden biri haline geldi. Bunun ana sebeplerinden biri, Python’un sunduğu güçlü kütüphaneler ve çerçevelerdir. Bu yazıda, Francois Chollet tarafından geliştirilen Keras kütüphanesini derin öğrenme projelerinizde nasıl kullanabileceğinizi keşfedeceğiz.

Keras ve TensorFlow ile Başlarken

Keras, derin öğrenme uygulamaları için yazılmış bir Python kütüphanesidir ve TensorFlow tabanlı bir API olarak kabul edilir. Basit, kullanıcı dostu bir arayüze sahip olmasıyla bilinir; bu da onu hem yeni başlayanlar hem de deneyimli geliştiriciler için ideal bir seçim haline getirir. İlk adım olarak, Keras’ı kullanmak için TensorFlow’un kurulu olduğundan emin olmalısınız. TensorFlow ve Keras’ı kurmak için aşağıdaki terminal komutunu kullanabilirsiniz:

pip install tensorflow keras

Bu işlem sonrası, Keras’ı kullanarak basit bir derin öğrenme modeli oluşturmak için gerekli tüm araçlara sahip olacaksınız. Aşağıda Keras ile basit bir yapay sinir ağı nasıl oluşturulur buna dair örnek bulacaksınız.

Örnek Model Oluşturma

Keras, model oluşturma sürecini basit ve anlaşılır hale getirir. Aşağıdaki kod parçasıyla, MNIST veri kümesi üzerinde bir yapı kuralım. MNIST, el yazısı rakamların tanınması için kullanılan klasik bir veri kümesidir.

from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Flatten

# MNIST veri setini yükle
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Verileri normalize et
x_train = x_train.reshape((60000, 28, 28, 1)).astype('float32') / 255
x_test = x_test.reshape((10000, 28, 28, 1)).astype('float32') / 255

# Modeli oluştur
model = Sequential()
model.add(Flatten(input_shape=(28, 28, 1)))
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

Yukarıdaki kodda önce Keras kütüphanesinden gerekli modülleri içe aktardık. Ardından, MNIST veri kümesini yükledik ve verileri normalize ettik. Modelimizi Sequential yapısıyla oluşturduk ve ağımıza iki katman ekledik. İlk katman, 128 nöron ve ‘relu’ aktivasyon fonksiyonu ile tam bağlıdır; son katman ise ‘softmax’ aktivasyon fonksiyonunu kullanarak çıktı olarak rakamları tahmin eder.

Eğitim Süreci

Modelimizi oluşturduktan sonra, eğitmek için derlememiz gerekiyor. Modelin derlenmesi aşamasında kayıp fonksiyonu, optimizasyon algoritması ve metrikler belirlenmelidir. Kategorik çapraz entropi kayıp fonksiyonu ve Adam optimizasyon algoritmasını kullanarak modelimizi derleyebiliriz:

model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

Modelimizi derledikten sonra, eğitim verileri üzerinde modelimizi eğitme aşamasına geçebiliriz. Aşağıdaki komut ile modelimizi eğitiyoruz:

model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

‘epochs’ parametresi, modelin eğitim verisi üzerinde kaç kez çalışacağını belirtirken; ‘batch_size’ ise her iterasyonda kullanılacak örnek sayısını tanımlar. Ayrıca, validation_split parametresi ile eğitim sırasında verimizin %20’sini doğrulama seti olarak ayırıyoruz. Bu, modelin overfitting (aşırı uyum) yapmaması açısından önemlidir.

Modelin Değerlendirilmesi

Modelimizi eğittikten sonra, testi veri kümesi üzerinde değerli sonuçlar almak için modelimizi değerlendirmeliyiz. Bunu aşağıdaki gibi gerçekleştirebiliriz:

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print('Test accuracy:', test_acc)

Yukarıdaki kod, modelin eğitimden sonra test seti üzerinde performansını ölçer. Testin neticesinde doğruluk değerini ekrana yazdırır. Bu adım, modelimizin gerçek veriler üzerindeki başarısını gösterir ve gerektiğinde iyileştirme yapmak için bir kıstas olabilir.

Modelin Kayıt Ve Yükleme İşlemleri

Eğitilen modeli kaydetmek ve daha sonra yüklemek oldukça basittir. Keras, bu işlemleri kolaylaştırmak için basit komutlar sunar:

model.save('mnist_model.h5')
model = keras.models.load_model('mnist_model.h5')

Bu şekilde, modelinizi .h5 formatında kaydedip daha sonra geri yükleyebilirsiniz. Böylece, uzun eğitim süreçlerini tekrarlamadan, modeli doğrudan kullanmaya başlayabilirsiniz.

Gelişmiş Özellikler ve Özelleştirme

Keras’ın sunduğu basitlik dışında, derin öğrenme projelerinde daha fazla kontrol ve özelleştirme yapmak isteyenler için de çeşitli olanaklar sunar. Kendi katmanlarınızı oluşturma yeteneği bu özelleştirmenin bir parçasıdır. Örneğin, aşağıda bir kişisel katman tanımlamak için basit bir örnek bulabilirsiniz:

from keras import backend as K
from keras.engine.topology import Layer

class MyLayer(Layer):
    def __init__(self, **kwargs):
        super(MyLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        self.w = self.add_weight(name='w', shape=(input_shape[-1], 64), initializer='uniform', trainable=True)
        super(MyLayer, self).build(input_shape)

    def call(self, inputs):
        return K.dot(inputs, self.w)

Özelleştirilebilen katmanlar, modelinizin farklı özelliklere sahip olmasına olanak tanır ve belirli durumlara uygun hale getirilebilir.

Sonuç ve Öneriler

Hızla gelişen yapay zeka alanında, derin öğrenmeyi anlamak ve uygulamak her zamankinden daha önemli hale gelmiştir. Keras, bu süreçte olduğu kadar güçlü, esnek ve kullanıcı dostu bir araçtır. Yukarıda incelediğimiz temel bilgiler ve örnekler, derin öğrenme projelerine sağlam bir başlangıç yapmanıza olanak tanıyacaktır.

Unutmayın, derin öğrenme karmaşık bir alan olabilir; ancak bol pratik ve deneyimle daha iyi sonuçlar elde edebilirsiniz. Yeni projelere başlamanın yanı sıra, mevcut projelerinizi de optimize ederek ve geliştirmeye devam ederek daha yüksek başarı oranlarına ulaşabilirsiniz. Bu süreçte Keras ve TensorFlow’un en son sürümlerini takip etmekte fayda vardır.

Python ile derin öğrenmeye olan ilginizi artırarak yolculuğunuza devam edin ve paylaşılan bilgileri kendi projelerinizde uygulayarak deneyimler kazanın. Başarılar dilerim!

Scroll to Top