• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

TensorFlow model.fit ile eğitim nasıl başlatılır?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
TensorFlow’da eğitimi başlatmak için önce modeli compile() ile yapılandırmalı, ardından eğitim verilerini model.fit() çağrısına vermelisiniz. Eğitim tamamlandığında her dönem için kayıp ve seçtiğiniz metrikler görüntülenir; doğrulama verisi kullanırsanız modelin eğitim dışında kalan verilerdeki başarısını da izleyebilirsiniz.

Eğitimden önce gerekenler​


model.fit() tek başına bir modeli eğitmez. Önce model oluşturulmalı, giriş verileri ile etiketlerin şekli uyumlu olmalı ve compile() içinde en az bir iyileştirici ile kayıp işlevi seçilmelidir. Aşağıdaki varsayımsal örnekte amaç, iki sınıftan birini tahmin eden küçük bir model eğitmektir.

En küçük çalışan örnek​

  1. TensorFlow’u içe aktarın ve eğitim verisini hazırlayın. Bu örnekte her satır iki özellikten oluşur; y ise beklenen sınıf etiketidir.
Python:
import tensorflow as tf
import numpy as np

x = np.array([
    [0.0, 0.0],
    [0.0, 1.0],
    [1.0, 0.0],
    [1.0, 1.0]
], dtype=np.float32)

y = np.array([0, 1, 1, 1], dtype=np.float32)

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(2,)),
    tf.keras.layers.Dense(8, activation="relu"),
    tf.keras.layers.Dense(1, activation="sigmoid")
])
  1. Modelin eğitim ayarlarını yapın. Tek bir 0/1 çıktısı üretildiği için binary_crossentropy kaybı uygundur. accuracy metriği, doğru sınıflandırma oranını izler.
Python:
model.compile(
    optimizer="adam",
    loss="binary_crossentropy",
    metrics=["accuracy"]
)
  1. Eğitimi başlatın. epochs=100, modelin tüm eğitim verisini 100 kez görmesini ister. verbose=1 varsayılan ilerleme çıktısını gösterir.
Python:
history = model.fit(
    x,
    y,
    epochs=100,
    verbose=1
)

Ekranda Epoch 1/100, loss ve accuracy gibi değerler görünüyorsa eğitim başlamıştır. history nesnesi de her dönem için ölçülen sonuçları saklar. Örneğin eğitim kaybına şu şekilde erişebilirsiniz:

Python:
print(history.history["loss"][-1])
print(history.history["accuracy"][-1])

Doğrulama verisiyle sonucu kontrol etme​


Yalnızca eğitim verisindeki doğruluk, modelin yeni verilerde de başarılı olduğunu kanıtlamaz. Eğitim sırasında ayrı bir doğrulama kümesi kullanmak için validation_data verin. Aşağıdaki ayrı varsayımsal örnek 100 gözlemi 80 eğitim ve 20 doğrulama örneğine ayırır. Model yeniden oluşturulur; önceki dört satırla eğitilmiş ağırlıklar kullanılmaz.

Python:
# Ayrı bir varsayımsal veriyle yeni model oluşturun.
rng = np.random.default_rng(42)
x_tum = rng.random((100, 2), dtype=np.float32)
y_tum = (x_tum.sum(axis=1) > 1.0).astype(np.float32).reshape(-1, 1)
x_train, x_val = x_tum[:80], x_tum[80:]
y_train, y_val = y_tum[:80], y_tum[80:]

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(2,)),
    tf.keras.layers.Dense(8, activation="relu"),
    tf.keras.layers.Dense(1, activation="sigmoid")
])
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])

history = model.fit(
    x_train,
    y_train,
    epochs=20,
    validation_data=(x_val, y_val),
    batch_size=32,
    verbose=1
)

Bu durumda her dönem sonunda val_loss ve val_accuracy değerleri de yazdırılır. Eğitim doğruluğu artarken doğrulama doğruluğu düşüyor veya doğrulama kaybı sürekli yükseliyorsa model eğitim verisini ezberliyor olabilir. Böyle bir sonuç, modelin kesinlikle kullanılamaz olduğunu değil, veri, model yapısı veya eğitim süresinin yeniden değerlendirilmesi gerektiğini gösterir.

Sık kullanılan fit() seçenekleri​


Aşağıdaki seçenekler eğitim davranışını değiştirir; her birini ihtiyaca göre kullanın.
SeçenekGöreviDikkat edilmesi gereken
epochsVeri kümesinin kaç kez baştan sona işleneceğini belirler.Çok yüksek değer ezberlemeye yol açabilir.
batch_sizeAğırlıkların kaç örnekten sonra güncelleneceğini belirler.Bellek kullanımı ve eğitim davranışı değişebilir.
validation_splitDizinin bir bölümünü doğrulama için ayırır.Dizi tabanlı girdilerde kullanılmalıdır; veri sıralamasını dikkate alın.
callbacksEğitim sırasında erken durdurma veya kayıt gibi işlemler ekler.İzlenecek değer, örneğin val_loss, açıkça seçilmelidir.
Örneğin doğrulama kaybı iyileşmeyi bıraktığında eğitimi durdurmak için:

Python:
early_stop = tf.keras.callbacks.EarlyStopping(
    monitor="val_loss",
    patience=3,
    restore_best_weights=True
)

history = model.fit(
    x_train,
    y_train,
    epochs=50,
    validation_data=(x_val, y_val),
    callbacks=[early_stop]
)

Eğitimin gerçekten işe yaradığını nasıl anlarsınız?​


Son dönemlerde loss değerinin azalması ve seçilen metriğin yükselmesi modelin eğitim verisine uyum sağladığını gösterir. Bu tek başına yeni verilerde iyi tahmin yapacağını kanıtlamaz; bunun için eğitimde kullanılmayan bir test kümesiyle ayrıca değerlendirme yapmalısınız.

Tahmin almak için eğitimden sonra predict() kullanabilirsiniz:

Python:
tahmin = model.predict(np.array([[1.0, 0.0]], dtype=np.float32))
print(tahmin)

Çıktı 0 ile 1 arasında bir olasılık olur. Örneğin 0.8 değeri modelin 1 sınıfına daha yakın bir tahmin yaptığını gösterir; bu değer tahminin kesinlikle doğru olduğunu kanıtlamaz. Karar eşiğini doğrulama verisinde seçin; seçilmiş modeli ve eşiği nihai, ayrı test verisindeki etiketlerle karşılaştırın.

Sık sorulan sorular​

model.fit() çağrısından önce compile() neden gereklidir?​

compile(), modelin kaybı nasıl hesaplayacağını, ağırlıkları hangi iyileştiriciyle güncelleyeceğini ve hangi metrikleri göstereceğini belirler. Bu ayar yapılmadan eğitim çağrısı eksik kalır.

Eğitim sırasında loss azalıyor ama accuracy artmıyorsa ne kontrol edilmelidir?​

Önce etiketlerin biçimini, son katmanın etkinleştirme işlevini ve seçilen kayıp işlevinin birbiriyle uyumunu kontrol edin. Ayrıca giriş verilerinin ölçeği, sınıf dağılımı ve model çıktısının beklenen şekli incelenmelidir.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst