Python ile Sinir Ağı Kodu Yazma Rehberi

Sinir Ağları ve Yapay Zeka: Temel Bilgiler

Sinir ağları, makine öğreniminin temel taşlarından biri olarak, insan beyninin çalışma prensiplerinden esinlenerek geliştirilmiştir. Gerçek dünyada birçok karmaşık problemin çözümünde kullanılan bu yapı, veri sınıflandırma, görüntü tanıma, doğal dil işleme gibi alanlarda oldukça etkili sonuçlar vermektedir. Python programlama dili, sinir ağı modellerini geliştirmek için en popüler ve yaygın olarak kullanılan dillerden biridir. Python’un zengin kütüphane ekosistemi sayesinde, sinir ağı geliştirme süreçleri oldukça hızlanmış ve kolaylaşmıştır.

Bu yazıda, basit bir sinir ağı oluşturmanın adımlarını gözler önüne sereceğiz. İlk olarak, temel kavramları öğreneceğiz, ardından gerekli kütüphaneleri tanıyacak ve sonunda adım adım kendi sinir ağı kodumuzu yazacağız. Derin öğrenme konusunda bilgi sahibi olmak için bu adımları takip etmek, size güçlü bir temel verecek ve kendi projelerinizde uygulamanızı kolaylaştıracaktır.

Sinir ağları, yapay nöronlardan oluşur ve bu nöronlar, birbirleriyle bağlantılıdır. Her bir nöron, belirli bir işlevi yerine getirir. Girdi verileri, nöronların ağına iletilir, bu veriler üzerinde belirli ağırlıklar ve bias terimleri uygulanarak sonuçlar elde edilir. Böylece, ağın çıkışından yararlanarak sonuçlar elde edilebilir. Sinir ağlarının çalışabilmesi için verilerin doğru bir şekilde etiketlenmesi ve uygun bir model tasarımına ihtiyacı vardır.

Gerekli Kütüphaneleri Yükleme

Python ile sinir ağı geliştirmek için kullanacağımız popüler kütüphaneler arasında TensorFlow ve Keras yer alır. Keras, kullanıcı dostu bir API sunarak sinir ağlarının kolayca oluşturulmasını sağlar. TensorFlow ise bu yüzyılın en güçlü makine öğrenimi kütüphanelerinden biridir ve Keras, TensorFlow üzerinde çalışır. Bu kütüphaneleri kullanarak derin öğrenme modellerimizi geliştirebiliriz.

Kütüphaneleri yüklemek için terminal veya komut istemcisinde şu komutları çalıştırabilirsiniz:

pip install tensorflow keras

Böylece, Keras ve TensorFlow kütüphanelerini sisteminize başarılı bir şekilde yüklemiş olacaksınız. Yükleme işlemi tamamlandığında, sinir ağı modelimizi tasarlamak için gerekli adımlara geçebiliriz. Unutmayın ki, Python ortamınızı yönetebilmek için sanal ortam kullanmanız, projenizin bağımlılıklarını ve sürümlerini yönetmek açısından faydalı olacaktır.

Basit Bir Sinir Ağı Modelinin Oluşturulması

Artık gerekli kütüphaneleri yüklediğimize göre, bir sinir ağı modeli oluşturma sürecine başlayabiliriz. İlk olarak, temel bir model tanımını yapalım. Kullanacağımız veriler için basit bir sınıflandırma problemi belirleyelim. Örneğin, el yazısı rakamları tanımak için MNIST veri setini kullanabiliriz. Bu veri seti, 0’dan 9’a kadar olan rakamların el yazısıyla yazılmış hali ile doludur ve bu sayede modelimiz, gelen verileri sınıflandırabilir hale gelecektir.

Sinir ağlarımızı oluşturma sürecine geçmeden önce, veri setini ve gerekli kütüphaneleri içe aktarmamız gerekiyor:

import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras.datasets import mnist

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

Yukarıdaki kodda, MNIST veri setini yüklüyoruz. Bu veriler, iki ayrı küme olarak eğitim ve test setlerine ayrılmıştır. Eğitim seti, modelin öğrenmesi için kullandığımız kısımdır, test seti ise modelimizin başarısını değerlendirmek için kullanılır. Her iki setin boyutlarına bakalım:

print(x_train.shape)  # (60000, 28, 28)
print(x_test.shape)   # (10000, 28, 28)

Bu çıktıları incelediğimizde, 60.000 eğitim örneği ve 10.000 test örneği olduğunu görebiliriz. Her bir görüntü 28×28 piksel boyutundadır.

Veri Ön İşleme

Modelinizi eğitmeden önce verilerinizi ön işlemeniz gerekiyor. Bu aşama, verilerin daha iyi bir şekilde değerlendirilmesine yardımcı olacaktır. MNIST veri kümesindeki görüntü verileri tamsayı formatındadır. Bu nedenle, verileri [0, 1] aralığına normalize etmek önemlidir. Ayrıca, etiketlerimizin katmanlı yapıya dönüştürülmesi gerekmektedir.

Veri kümesini normalleştirmek ve etiketleri one-hot encode formatında dönüştürmek için aşağıdaki kodu kullanabiliriz:

x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

# Etiketleri one-hot kodlama
num_classes = 10
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

Bu kodda, x_train ve x_test verilerini 255’e bölerek normalleştiriyoruz. Daha sonra, her rakamın temsil edildiği etiketleri, one-hot formatına dönüştürüyoruz. Örneğin, 3 sayısını [0, 0, 0, 1, 0, 0, 0, 0, 0, 0] olarak temsil ederiz.

Modelin Tanımlanması ve Eğitilmesi

Artık verilerimiz ön işlendiğine göre modelimizi tanımlayıp eğitime geçebiliriz. Basit bir yapay sinir ağı modelini Keras kullanarak inşa edeceğiz. İşte model tanımımız:

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(num_classes, activation='softmax')
])

Bu modelde ilk katman, görüntüleri düzleştirir; ikinci katman, 128 nörondan oluşan bir tam bağlantılı katmandır ve ReLU aktivasyon fonksiyonu kullanır. Son katman ise, çıktıların olasılık dağılımını belirtmekte ve softmax aktivasyon fonksiyonu kullanmaktadır. Modelin derlenmesi için optimizasyon algoritması ve kayıp fonksiyonunu belirliyoruz:

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

Artık modelimizi eğitmek için hazırız. Eğitmek için eğitim verilerini kullanıyoruz:

model.fit(x_train, y_train, epochs=5, batch_size=32)

Burada model.fit fonksiyonu, eğitim verilerini kullanarak modelimizi 5 dönem boyunca eğitecektir. Her bir dönem sonrasında modelimizin doğruluğu artırmaya çalışacaktır. Eğitim sürecinin sonunda, modelimizin test veri seti üzerindeki başarısını görmek için aşağıdaki kodu çalıştırabiliriz:

test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test doğruluğu:', test_acc)

Sonuç ve Geliştirme İpuçları

Yukarıda anlatılan adımları takip ederek basit bir sinir ağı oluşturmayı başardık. Python kullanarak sinir ağı kodunu yazmak, karmaşık görünse de, adım adım ilerleyerek oldukça keyifli hale getirilebilir. Bu temel sinir ağı modelini daha karmaşık ve etkili hale getirmek için farklı katmanlar, optimizasyon algoritmaları ve hiperparametre ayarları denemek mümkündür.

Modeli geliştirmek için aşağıdaki ipuçlarını dikkate alabilirsiniz:

  • Layer Sayısını Artırın: Daha fazla katman ekleyerek modelin karmaşıklığını artırın. Derin bir ağ, daha karmaşık verileri öğrenme kapasitesine sahip olacaktır.
  • Aktivasyon Fonksiyonlarını Deneyin: Farklı aktivasyon fonksiyonları kullanarak modelin performansını artırmayı deneyin. Leaky ReLU veya ELU gibi alternatifleri göz önünde bulundurabilirsiniz.
  • Veri Augmentasyonu: Eğitim setinize veri augmentasyonu ekleyerek modelinizin generalizasyon yeteneğini artırabilirsiniz. Görüntüleri döndürmek, kaydırmak veya ayna görüntüsü almak gibi yöntemler deneyebilirsiniz.

Son olarak, öğrenme sürecinizi hızlandırmak ve sonuçlarınızı iyileştirmek için düzenli olarak literatürü takip edebilir ve yeni teknikler üzerinde çalışabilirsiniz. Python ile sinir ağları yazmak, pratik yaparak ve merak ederek daha da keyifli hale gelecektir.

Scroll to Top