Python ile Sinir Ağı Oluşturma: Temel Rehber

Sinir Ağları Nedir?

Sinir ağları, insan beyninin çalışma şekline benzer bir modelleme yaparak veri işleyebilen hesaplama sistemleridir. Gelişmiş makine öğrenimi ve derin öğrenme tekniklerinin temel taşlarından biridir. Sinir ağlarının temeli, birbirine bağlı ‘nöron’ adı verilen yapılar ile oluşturulur ve bu nöronlar, verilerin işlenmesi ve öğrenmesi için birlikte çalışır. Bir çok uygulama alanına sahip olan sinir ağları, görüntü işleme, doğal dil işleme ve oyun geliştirme gibi pek çok sektörde kullanılır.

Günümüzde, Python gibi güçlü ve yaygın bir programlama dili, sinir ağı oluşturma ve eğitme süreçlerini basit hale getirmektedir. Python’un popülaritesinin sebeplerinden biri de zengin kütüphane desteğidir. Özellikle TensorFlow, Keras ve PyTorch gibi kütüphaneler, kullanıcıların sinir ağı modelleri oluşturmasını ve eğitmesini oldukça kolaylaştırır.

Bu yazıda, Python kullanarak basit bir sinir ağı modelinin nasıl oluşturulacağını ve eğitileceğini adım adım inceleyeceğiz. Öncelikle, sinir ağının yapı taşlarını ve temel bileşenlerini anlamak, ardından Python programlama dili ve ilgili kütüphaneler ile bu süreci gerçekleştireceğiz.

Python Kütüphaneleri ile Sinir Ağı Oluşturma

Python’da sinir ağı oluşturmanın en yaygın yollarından biri, Keras kütüphanesini kullanmaktır. Keras, TensorFlow üzerinde çalışan ve kullanıcı dostu bir API sunan bir derin öğrenme kütüphanesidir. Keras sayesinde, birkaç basit adımla sinir ağı modelleri oluşturabilir ve bunları eğitebilirsiniz.

Öncelikle, projeniz için gerekli olan bağımlılıkları yükleyin. Keras ve TensorFlow’u yüklemek için aşağıdaki pip komutlarını terminalde çalıştırmanız yeterlidir:

pip install tensorflow

Yardımcı kütüphaneleri yükledikten sonra, ilk adımda veri kümenizi hazırlamalısınız. Bu örnekte, basit bir sınıflandırma problemi olan MNIST el yazısı rakamları veri setini kullanacağız. MNIST, 0’dan 9’a kadar rakamların el yazısıyla yazıldığı 70,000 görüntü içeren bir veri setidir. Keras, bu veri kümesini otomatik olarak indirip yükleme olanağı sunar.

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

Veri kümesini yükledikten sonra, verileri uygun bir biçime dönüştürmek önemli bir adımdır. Görüntü verileri genellikle 28×28 piksel boyutundadır, bu nedenle bunları düzleştirerek (flatten) uygun bir biçime getirmeliyiz.

x_train = x_train.reshape((60000, 28 * 28)).astype('float32')
x_test = x_test.reshape((10000, 28 * 28)).astype('float32')

Bu adımda verileri normalleştirmek de önemlidir. Normalleştirme, verilerin aralığını 0 ile 1 arasında bir değere ayarlayarak modelin daha hızlı ve etkili bir şekilde öğrenmesini sağlar.

x_train /= 255
x_test /= 255

Modeli Oluşturma

Verilerimizi hazırladıktan sonra, bir sinir ağı modeli oluşturalım. Keras kullanarak basit bir model oluşturmak oldukça kolaydır. İlk olarak Keras’tan Sequential sınıfını ve gerekli katmanları içeren ilgili sınıfları içe aktaralım:

from keras.models import Sequential
from keras.layers import Dense, Activation

Sequential modeli, katmanları sırayla ekleyerek oluşturduğumuz bir model türüdür. Aşağıda, 784 nörondan oluşan bir giriş katmanı, ardından gizli bir katman ve son olarak 10 çıkış nöronu içeren bir model oluşturacağız. Çıkış katmanı, sınıflandırma işleminin sonucu olarak 0 ile 9 arasında bir rakam verecektir.

model = Sequential()
model.add(Dense(128, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))

Modelimiz tamamladıktan sonra, modelin derlenmesi gerekir. Derleme işlemi sırasında kayıp fonksiyonu, optimizer ve performans metric’leri belirlenir. Kategorik sınıflandırma için genellikle ‘sparse_categorical_crossentropy’ kayıp fonksiyonu kullanılır.

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

Modeli Eğitmek

Modeli oluşturduktan sonra şimdi eğitim aşamasına geçebiliriz. Modelin eğitilmesi, veriler üzerinde geri yayılım algoritması ile parametrelerin güncellenmesini içerir. Keras içindeki fit() metodunu kullanarak modelimizi eğiteceğiz.

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

Burada ‘epochs’, modelin tüm eğitim verileri üzerinde kaç kez döneceğini ve ‘batch_size’ ise her seferinde kaç örneğin işleneceğini belirler. Eğitim süreci tamamlandıktan sonra modelin başarısını test etmek için test verileri üzerinde değerlendiriyoruz.

test_loss, test_accuracy = model.evaluate(x_test, y_test)

Test sonuçlarını alarak modelimizin ne kadar etkili çalıştığını görebiliriz. Eğer eğitim ve test sonuçları tatmin edici değilse, modelin mimarisini değiştirerek ve hiperparametrelerle oynamalar yaparak iyileştirmeler yaratabiliriz.

Sinir Ağı ile Tahmin Yapma

Eğitim süreci başarılı geçmişse, model 0’dan 9’a kadar rakamları doğru bir şekilde tahmin edebilmelidir. Tahmin yapmak için test verilerimizden bir örnek alabiliriz. Modelimizi kullanarak tahminlerde bulunmak için predict() metodunu kullanırız.

predictions = model.predict(x_test)

Bu işlem sonrasında, ‘predictions’ değişkeni, her bir test örneği için tahmin edilen rakamları içerecektir. Örneğin, ilk tahmin edilen değeri görüntülemek isterseniz:

import numpy as np
predicted_class = np.argmax(predictions[0])
print(f'Tahmin Edilen Rakam: {predicted_class}')

Örnek üzerinde tahmin yaptığınızda, modelin ne kadar iyi çalıştığını görme fırsatınız olacaktır. Eğer model, test veri kümesindeki rakamları tahmin edebiliyorsa, bu modelin verimli bir şekilde eğitildiğini gösterir.

Sonuçlar ve Gelecek Adımlar

Bu yazıda, Python kullanarak basit bir sinir ağı modelinin nasıl oluşturulacağı ve eğitileceği üzerine bir rehber sunduk. Keras kütüphanesinin sağladığı kolaylıklarla hızlı bir şekilde model geliştirebilir ve derin öğrenme uygulamalarına adım atabilirsiniz. Sinir ağları, hem basit hem de karmaşık problemleri çözmek için güçlü araçlardır.

Gelecek adımlarınız arasında, farklı model mimarileri denemek, hiperparametre optimizasyonu yapmak ve daha karmaşık veri kümesi üzerinde çalışmak bulunabilir. Ayrıca, modelin overfitting (fazla öğrenme) yaşamasını önlemek için dropout katmanları eklemek ve veri artırma teknikleri uygulamak gibi stratejiler de değerlendirilebilir.

Sonuç olarak, yeni bir teknoloji olan derin öğrenme alanındaki bu keşifleriniz, inşa ettiğiniz projelerde sizlere pratik bilgiler sunacaktır. Her zaman deneme yanılma yöntemini kullanarak öğrenim sürecinizi zenginleştirin ve projelerinize yenilikçi fikirler eklemeye teşvik edin.

Scroll to Top