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ı
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.
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.
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.
Modeli Eğitme:
model.fit
komutu ile modeli eğitim verileri üzerinde 5 döngü (epochs=5
) boyunca eğitiyoruz.
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.
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
Hiç yorum yok :
Yorum Gönder