Kategori: Deep Learning , 27 Nisan 2020 , JanFranco
Bir modeli train ederken, epoch değerini yüksek vermek demek, iyi bir sonuç alacağımız anlamına gelmez. Örneğin epoch değerini 100 verdiğimizde, en iyi sonuç 65-70 epoch arasında olabilir ve train devam ettikçe accuracy değerleri düşebilir. Bu durumda 65-70 epoch arasında modeli save edebiliriz. Böylece en iyi sonuç veren modeli kullanmış oluruz. Bu tür bir uygulama yapabilmek için keras kütüphanesindeki ModelCheckpoint methodunu kullanacağız. Örnek görelim:
ModelCheckpoint parametrelerini açıklayalım: İlk parametre, modelin nereye kaydedileceğidir. İkinci parametre hangi değerlere göre kaydedileceğidir. Burada validation loss yazdık. Yani validation loss değerlerine göre model kaydedilecek. Üçüncü parametre moddur. "min" diyerek, minimum validation loss değerlerini önemsediğimizi söyledik. save_best_only parametresini True yaparak, sadece en iyi değerlerde kaydedilmesini söyledik. verbose değerini de 1 yaparak, kaydedilme bilgilerinin ekrana basılmasını istedik. Buradaki değerler bize şunu söylemekte, modeli ilk epochta kaydet, eğer bir sonraki epochta validation loss değeri daha düşük olursa, tekrar kaydet. Eğer bir sonraki validation loss değeri daha yüksek çıkarsa kaydetme.from keras.callbacks import ModelCheckpoint checkpoint = ModelCheckpoint("drive/ColabNotebooks/Models/", monitor = "val_loss", mode = "min", save_best_only = True, verbose = 1) callbacks = [checkpoint] history = model.fit(x_train, y_train, batch_size = 64, epochs = 3, verbose = 2, callbacks = callbacks, validation_data = (x_test, y_test))
EarlyStopping methodnunun parametrelerini açıklayalım: Monitor parametresi hangi değeri baz alacağımızdır. Min_delta parametresi, modelin durması için gereken değişim miktarıdır. Patience parametresi, modelin durması için kaç epoch boyunca sonucun iyiye gitmemesi gerektiğidir. Verbose parametresini açıklamıştık, restore_best_weights parametresi True veya False değerlerini alır. True değerini değerini verirsek, modelin en iyi halindeki ağırlıkları yani weightleri saklar ve kayıt esnasında onları kaydeder.earlystop = EarlyStopping(monitor = "val_loss", min_delta = 0, patience = 3, verbose = 1, restore_best_weights = True) callbacks = [earlystop, checkpoint]
ReduceLROnPlateau methodunun parametrelerini açıklayalım: monitor parametresini artık biliyoruz, factor parametresi yeni learning rate değerinin nasıl oluşturulacağını belirler. Formul şu şekildedir, new_lr = lr * factor. Patience değeri, kaç epoch boyunca algoritmanın sabredeceğidir. Burada 3 değerini verdik yani sonuçlar iyi gitmemesine rağmen 3 epoch boyunca bekleyecek ve 3. epochtan sonra learning rate değeri düşecektir. Verbose parametresini de açıklamıştık. Min_delta parametresi, threshold değeridir yani eşik değerdir.from keras.callbacks import ReduceLROnPlateau reduce_lr = ReduceLROnPlateau(monitor = "val_loss", factor = 0.2, patience = 3, verbose = 1, min_delta = 0.0001) callbacks = [earlystop, checkpoint, reduce_lr]