簡體   English   中英

在 keras 中保存最佳模型

[英]Saving best model in keras

我在 keras 中訓練模型時使用以下代碼

from keras.callbacks import EarlyStopping

model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(1))

model_2.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])


model.fit(X, y, epochs=15, validation_split=0.4, callbacks=[early_stopping_monitor], verbose=False)

model.predict(X_test)

但最近我想保存最好的訓練模型,因為我正在訓練的數據在“高 val_loss vs epochs”圖中給出了很多峰值,我想使用模型中最好的一個。

有什么方法或功能可以幫助解決這個問題嗎?

EarlyStoppingModelCheckpoint是您從 Keras 文檔中需要的。

您應該在 ModelCheckpoint 中設置save_best_only=True 如果需要任何其他調整,都是微不足道的。

為了幫助你更多,你可以在 Kaggle 上看到一個用法。


如果上面的 Kaggle 示例鏈接不可用,請在此處添加代碼:

model = getModel()
model.summary()

batch_size = 32

earlyStopping = EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='min')
mcp_save = ModelCheckpoint('.mdl_wts.hdf5', save_best_only=True, monitor='val_loss', mode='min')
reduce_lr_loss = ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=7, verbose=1, epsilon=1e-4, mode='min')

model.fit(Xtr_more, Ytr_more, batch_size=batch_size, epochs=50, verbose=0, callbacks=[earlyStopping, mcp_save, reduce_lr_loss], validation_split=0.25)

EarlyStoppingrestore_best_weights參數可以解決問題:

restore_best_weights:是否從監測數量的最佳值的epoch恢復模型權重。 如果為 False,則使用在訓練的最后一步獲得的模型權重。

所以不確定你的early_stopping_monitor是如何定義的,但是使用所有默認設置並看到你已經導入了EarlyStopping你可以這樣做:

early_stopping_monitor = EarlyStopping(
    monitor='val_loss',
    min_delta=0,
    patience=0,
    verbose=0,
    mode='auto',
    baseline=None,
    restore_best_weights=True
)

然后就像你已經做的那樣,用callbacks=[early_stopping_monitor]調用model.fit()

我猜model_2.compile是一個錯字。 如果您想將最佳模型 wrt 保存到 val_losses,這應該會有所幫助 -

checkpoint = ModelCheckpoint('model-{epoch:03d}-{acc:03f}-{val_acc:03f}.h5', verbose=1, monitor='val_loss',save_best_only=True, mode='auto')  

model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])

model.fit(X, y, epochs=15, validation_split=0.4, callbacks=[checkpoint], verbose=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM