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

TensorFlow'da model ve ağırlıklar nasıl kaydedilir?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Modeli yeniden kullanmak istiyorsanız modeli ve ağırlıkları birlikte model.save() ile kaydedin; yalnızca öğrenilmiş parametreleri saklayacaksanız model.save_weights() kullanın. Daha sonra aynı mimariyi veya kayıtlı modeli yükleyip eğitime devam edebilir, tahmin yapabilir ya da modeli başka bir ortamda kullanabilirsiniz. En küçük çalışan örnekte model kaydı için .keras, yalnız ağırlık kaydı için .weights.h5 uzantısı kullanılır.

Model ile ağırlık arasındaki fark​

Model kaydı, mimariyi, katman ayarlarını ve öğrenilmiş ağırlıkları tek bir kayıtta tutar. Kayıt biçimi destekliyorsa derleme bilgileri ve iyileştirici durumu da saklanabilir. Bu yöntem, modeli daha sonra doğrudan yüklemek istediğinizde uygundur.

Ağırlık kaydı yalnızca katmanların öğrendiği sayısal parametreleri saklar. Ağırlıkları yüklemek için model mimarisinin önce yeniden oluşturulmuş ve katman sırasının, katman türlerinin ve parametre şekillerinin uyumlu olması gerekir. Ağırlık dosyası tek başına modelin mimarisini veya özel katman kodunu içermez.

Modeli ve ağırlıkları birlikte kaydetme​

Aşağıdaki örnek varsayımsaldır. Model eğitildikten sonra model.keras dosyası oluşur; bu dosya daha sonra modeli doğrudan yüklemek için kullanılabilir.

Python:
import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(4,)),
    tf.keras.layers.Dense(16, activation="relu"),
    tf.keras.layers.Dense(1, activation="sigmoid")
])

model.compile(
    optimizer="adam",
    loss="binary_crossentropy",
    metrics=["accuracy"]
)

# Örnek eğitim verisi
x_train = tf.random.normal((100, 4))
y_train = tf.cast(tf.random.uniform((100, 1)) > 0.5, tf.float32)

model.fit(x_train, y_train, epochs=3, verbose=0)
model.save("model.keras")
  1. Modeli oluşturun ve derleyin. Modelin giriş şekli, katmanları ve derleme ayarları eğitim sırasında kullanılanlarla aynı olmalıdır.
  2. Eğitilmiş durumu kaydedin. Amaç eğitim sonucunu saklamaksa ilgili model.fit() çağrısının tamamlandığını doğrulayın. Eğitilmemiş bir model de kaydedilebilir; kayıt işlemi kendi başına modeli eğitmez.
  3. Modeli kaydedin. model.save("model.keras") çağrısı çalıştırıldığında belirtilen konumda model.keras dosyası oluşur. Güncel Keras API’sinde overwrite=True varsayılandır; aynı yoldaki dosyanın üzerine yazılabilir. Önceki kaydı korumak istiyorsanız farklı bir dosya yolu seçin.
  4. Kayıt dosyasını yükleyin. tf.keras.models.load_model("model.keras") çağrısı, kayıt edilen modeli yeniden oluşturur.
  5. Sonucu doğrulayın. Yüklenen modelle predict() veya evaluate() çalıştırın. Tahmin biçimi ve değerleri beklenen modele aitse kayıt ve yükleme işlemi tamamlanmıştır.
Modeli yüklemek için temel kullanım şöyledir:

Python:
loaded_model = tf.keras.models.load_model("model.keras")

predictions = loaded_model.predict(x_train[:5], verbose=0)
print(predictions.shape)

Buradaki çıktı şekli, son katmanın çıkışına bağlıdır. Örneğin son katman Dense(1) ise beş giriş örneği için genellikle (5, 1) biçiminde bir sonuç alınır. Bu kontrol, dosyanın yalnızca okunabildiğini değil, yüklenen nesnenin beklenen girişle çalıştığını da gösterir; tek başına modelin doğruluğunu kanıtlamaz.

Yalnızca ağırlıkları kaydetme​

Ağırlık kaydı, aynı mimariyi kod içinde yeniden kurduğunuz senaryolarda daha uygundur. Örneğin mimariyi kaynak kodda tutup eğitim sonucunu ayrı dosyalarda saklayabilirsiniz.

Python:
model.save_weights("model.weights.h5")

Ağırlıkları yüklemek için önce uyumlu model nesnesini oluşturun:

Python:
restored_model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(4,)),
    tf.keras.layers.Dense(16, activation="relu"),
    tf.keras.layers.Dense(1, activation="sigmoid")
])

restored_model.load_weights("model.weights.h5")

predictions = restored_model.predict(x_train[:5], verbose=0)
print(predictions.shape)
  1. Aynı mimariyi yeniden oluşturun. Katmanların türü, sırası, birim sayısı ve ağırlık şekilleri kayıt sırasında kullanılan modelle uyumlu olmalıdır.
  2. Modeli gerekli hâle getirin. Alt sınıflandırılmış veya giriş şekli henüz belirlenmemiş modellerde, ağırlıkları yüklemeden önce modelin giriş tensörünü görmesi gerekebilir. Aksi durumda oluşturulacak ağırlık değişkenleri hazır olmayabilir.
  3. Ağırlıkları yükleyin. load_weights("model.weights.h5") çağrısı dosyadaki parametreleri modelin karşılık gelen katmanlarına yerleştirir.
  4. Yüklemeyi kontrol edin. Aynı girdilerle tahmin alarak modelin beklenen biçimde çalıştığını kontrol edin. Bu yeni model nesnesinde evaluate() kullanacaksanız önce uygun kayıp ve metriklerle compile() çağırın; yalnız ağırlık yüklemek bu nesneyi kendiliğinden derlemez.

Hangi kayıt yöntemini seçmelisiniz?​

İki yöntem arasındaki temel fark, dosyanın model mimarisini içerip içermemesidir. Seçimi aşağıdaki ölçütle yapabilirsiniz.
İhtiyaçYöntemYüklerken gerekenler
Modeli tek dosyadan yeniden açmakmodel.save("model.keras")Kayıt dosyası ve gerekiyorsa özel nesnelerin tanımı
Yalnız öğrenilmiş parametreleri saklamakmodel.save_weights("model.weights.h5")Uyumlu model mimarisi
Mimarinin kaynak kodda sabit kalmasıAğırlık kaydıAynı katman yapısı ve giriş şekli
Eğitime kaldığı yerden devam etmekModel kaydı veya kontrol noktası yaklaşımıModel ağırlıklarıyla birlikte eğitim durumunun da gerekip gerekmediği kontrol edilmeli
Tablodaki son satır önemlidir: Ağırlıkları kaydetmek, her zaman iyileştiricinin durumunu, dönem sayacını veya öğrenme oranı planlayıcısını kaydettiğiniz anlamına gelmez. Eğitime gerçekten kaldığınız yerden devam etmek istiyorsanız kullandığınız kayıt yönteminin eğitim durumunu da koruyup korumadığını ayrıca doğrulayın. Yalnızca tahmin yapmak içinse modelin doğru yüklenmesi ve aynı ön işleme adımlarının uygulanması genellikle asıl gereksinimdir.

Yaygın hatalar ve anlamları​

Ağırlıklar yüklenemiyor: Genellikle model mimarisi ile kayıt dosyası uyuşmuyordur. Katman sırasını, katman adlarını, birim sayılarını, giriş şeklini ve özel katmanların kodunu karşılaştırın. Hata, dosyanın bozuk olduğunu tek başına kanıtlamaz.

Model yükleniyor ancak tahminler değişiyor: Eğitim ve tahmin sırasında uygulanan normalleştirme, ölçekleme, metin dönüştürme veya özellik sırası farklı olabilir. Kayıt dosyası veri ön işleme kodunu otomatik olarak doğru hâle getirmez; aynı girdinin modele aynı biçimde verilmesi gerekir.

Özel katman veya özel kayıp kullanılıyor: Model dosyası özel Python nesnelerinin kodunu her durumda kendiliğinden sağlayamaz. Yükleme sırasında gereken özel sınıf, işlev veya nesne tanımlarını yükleme ortamında erişilebilir tutun ve kullanılan sürümle uyumunu kontrol edin.

Dosya adı uzantısı hatalı: Model kaydı ile yalnız ağırlık kaydını karıştırmayın. Modeli load_model() ile açacağınız bir dosya ile load_weights() için kullanılacak ağırlık dosyası aynı amaçla kullanılmaz. Kayıt türünü dosya adında açıkça belirtmek, daha sonra yanlış yükleme yöntemini seçme riskini azaltır.
 
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.
Robotlar:
  • Anthropic
Geri
Üst