görsel veri analizi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
görsel veri analizi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

6 Eylül 2025 Cumartesi

Tensorflow ve Python ile Makine Öğrenmesine dair Küçük bir Adım

 Merhaba Tarih 6 eylül 2025 , zaman ne kadar da hızlı geçiyor değil mi? En son yazımda yenilenen 9. Sınıf Matematik Müfredatından konuşurken bu yaz Algoritma ve Bilişim Ünitesi için komple bir Tema bile yazmış bulunmaktayım. Umarım en kısa sürede baskıdan çıkar ve sislerle de görsellerini paylaşabilirim. Ne diyordum daha ikinci cümleden zamanın gerisinde bile kalmış bulunuyoruz. Yeni yayınlarımız dizile dursun, biz sizlerle bu yazımda biraz Makine öğrenmesine küçük bir adım atacağız. Makine Öğrenmesi Nedir? Nasıl yapılır? gibi sorulara bu ufak uygulamada cevap vermeye çalışacağım. Öncelikle bu konuda temel bazı uygulamalardan bahsetmek şart. Bunların ilki Tensorflow...

TensorFlow, makine öğrenimi ve derin öğrenme modelleri oluşturmak ve eğitmek için kullanılan, açık kaynaklı bir yazılım kütüphanesidir. Google tarafından geliştirilmiştir ve çeşitli görevler için geniş bir uygulama yelpazesine sahiptir.

Temel Özellikleri

  • Esneklik: TensorFlow, basit regresyon modellerinden karmaşık sinir ağı mimarilerine kadar her türlü makine öğrenimi modelini oluşturmak için kullanılabilir.

  • Ölçeklenebilirlik: Hem tek bir bilgisayarda hem de dağıtılmış bir sistemde (çok sayıda sunucu veya GPU) çalışacak şekilde tasarlanmıştır. Bu, büyük ölçekli projelerde yüksek performans sağlar.

  • Çoklu Platform Desteği: Masaüstü bilgisayarlar, sunucular, mobil cihazlar ve hatta web tarayıcıları gibi çeşitli platformlarda çalışabilir.

  • Keras ile Entegrasyon: TensorFlow 2.0 sürümünden itibaren, kullanıcı dostu ve hızlı bir API olan Keras ile entegre bir şekilde gelir. Bu, model oluşturma sürecini oldukça basitleştirir.

Nasıl Çalışır?

TensorFlow, verileri tensörler adı verilen çok boyutlu diziler olarak işler. Bir tensör, sayılardan oluşan bir matris veya vektör gibidir ve bir modelin girdilerini, çıktılarını ve ağırlıklarını temsil etmek için kullanılır. Modelin eğitimi, bu tensörler üzerinde matematiksel işlemlerin (grafiksel olarak) akışını içerir.

Nerelerde Kullanılır?

TensorFlow, birçok alanda aktif olarak kullanılmaktadır:

  • Görüntü Tanıma: Resimlerdeki nesneleri, yüzleri veya el yazısını tanıma.

  • Doğal Dil İşleme (NLP): Metin sınıflandırma, duygu analizi, makine çevirisi ve sohbet botları.

  • Konuşma Tanıma: Sesli komutları veya konuşmaları metne dönüştürme.

  • Öneri Sistemleri: E-ticaret sitelerinde ürün veya film önerileri yapma.

  • Tıbbi Tanı: Görüntü analizi ile hastalıkların teşhisi.

Kısacası, TensorFlow, yapay zekanın çeşitli alanlarında yenilikçi uygulamalar geliştirmek isteyen herkes için güçlü ve çok yönlü bir araçtır.

şimdi bu araçla küçük bir uygulama yapalım...

Bu örnekte, MNIST veri setini (el yazısı rakamlardan oluşan bir veri seti) kullanarak bir sinir ağı oluşturacağız.

Gerekli Kütüphaneleri Kurma

Öncelikle, bilgisayarınızda TensorFlow ve diğer gerekli kütüphanelerin kurulu olduğundan emin olun. Komut istemini (terminal) açın ve aşağıdaki komutu çalıştırın: 

pip install tensorflow matplotlib

  • tensorflow: Modelimizi oluşturmak ve eğitmek için ana kütüphanemiz.

  • matplotlib: Veri setindeki görüntüleri göstermek için kullanacağız.    

Devam... 

Python Kodunu Yazma

Bir Python dosyası oluşturun (örneğin, mnist_uygulamasi.py) ve içine aşağıdaki kodları yapıştırın. Kodun her bölümünü açıklayacağım.

import tensorflow as tf

import matplotlib.pyplot as plt

# 1. Veri Setini Yükleme ve Hazırlama

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Veri setini 0-1 aralığına normalize etme

x_train, x_test = x_train / 255.0, x_test / 255.0

# 2. Modeli Oluşturma

model = tf.keras.models.Sequential([

    # Giriş katmanı (görüntü boyutunu düzleştirir)

    tf.keras.layers.Flatten(input_shape=(28, 28)),

    # Gizli katman (128 nöronlu ve ReLU aktivasyon fonksiyonlu)

    tf.keras.layers.Dense(128, activation='relu'),

    # Çıkış katmanı (10 nöronlu, her bir rakam için bir tane)

    tf.keras.layers.Dense(10)])

# 3. Modelin Eğitimi için Yapılandırma

model.compile(optimizer='adam',

              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),

              metrics=['accuracy'])

# 4. Modeli Eğitme

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

# 5. Modelin Başarımını Değerlendirme

test_loss, test_acc = model.evaluate(x_test,  y_test, verbose=2)

print(f'\nTest Doğruluğu: {test_acc * 100:.2f}%')


# 6. Bir Tahmin Yapma ve Sonucu Görüntüleme

# Modelin çıktılarını olasılıklara dönüştür

probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])

predictions = probability_model.predict(x_test)

# İlk test görüntüsünü seçme

img_index = 0

predicted_label = tf.argmax(predictions[img_index]).numpy()

true_label = y_test[img_index]

# Görüntüyü ve tahmin sonucunu ekrana basma

plt.imshow(x_test[img_index], cmap=plt.cm.binary)

plt.title(f'Tahmin: {predicted_label}, Gerçek: {true_label}')

plt.show()

Kodun Açıklaması

  1. Veri Setini Yükleme ve Hazırlama:

    • mnist.load_data() komutu, 60.000 eğitim ve 10.000 test görüntüsünden oluşan MNIST veri setini yükler.

    • Görüntü verileri (piksel değerleri 0-255 aralığında) 255.0 ile bölünerek normalize edilir. Bu, modelin daha hızlı ve kararlı bir şekilde öğrenmesine yardımcı olur.

  2. Modeli Oluşturma:

    • tf.keras.models.Sequential ile katmanları art arda ekleyerek basit bir sinir ağı oluşturuyoruz.

    • Flatten katmanı: 28x28 piksellik iki boyutlu görüntüyü 784 piksellik tek boyutlu bir vektöre dönüştürür.

    • Dense katmanı: Tam bağlantılı (fully connected) bir katmandır. İlk katmanda 128 nöron ve relu aktivasyon fonksiyonu kullanıyoruz.

    • Çıkış katmanı: 10 nöron içerir (her rakam için bir tane) ve hangi rakamın tahmin edildiğini belirtir.

  3. Modelin Eğitimi için Yapılandırma:

    • model.compile ile modelin eğitim sürecini yapılandırırız.

    • optimizer: adam algoritması, modelin ağırlıklarını nasıl güncelleyeceğini belirler.

    • loss: SparseCategoricalCrossentropy kayıp fonksiyonu, modelin tahminleri ile gerçek etiketler arasındaki farkı hesaplar.

    • metrics: accuracy metriği, modelin doğru tahmin oranını gösterir.

  4. Modeli Eğitme:

    • model.fit komutu ile modeli eğitim verileri üzerinde 5 döngü (epochs=5) boyunca eğitiyoruz.

  5. Modelin Başarımını Değerlendirme:

    • model.evaluate ile modelin, eğitimde hiç görmediği test verileri üzerindeki doğruluğunu ölçeriz.

  6. Bir Tahmin Yapma ve Sonucu Görüntüleme:

    • Eğitilmiş model, ham logits (olasılıklar değil) üretir. Bu yüzden Softmax katmanını ekleyerek bu logitleri 0-1 aralığındaki olasılıklara dönüştürüyoruz.

    • tf.argmax ile en yüksek olasılığa sahip indeksi (yani tahmin edilen rakamı) buluyoruz.

    • matplotlib ile ilk test görüntüsünü ve modelin bu görüntü için yaptığı tahmini ekrana yazdırıyoruz.

Bu kod dosyasını kaydettikten sonra, komut satırından python mnist_uygulamasi.py komutuyla çalıştırabilirsiniz. Uygulamanın çıktısı, modelin eğitim sürecindeki başarımı ve sonunda bir test görüntüsü için yaptığı tahmini gösterecektir.     Mustafa BARDAK  7.09.2025 

Video Haber