簡體   English   中英

如何使用 keras 保存最佳權重和最佳模型

[英]how to save best weights and best model using keras

專家們,我是機器學習的新手,我使用 Keras API 和 TensorFlow 后端來訓練機器學習模型。 我正在使用模型檢查點在 .json 和 .h5 文件中獨立保存最佳權重和最佳模型。到目前為止,我嘗試編寫如下代碼,但沒有保存任何模型或權重。 希望我能得到好的解決方案。在此先感謝。

    filepath1="best_weights.h5"
    filepath2="best_model.json"
    checkpoint = ModelCheckpoint(filepath1, monitor='val_acc', verbose=1, save_best_only=True,  mode='max')
    callbacks_list = [checkpoint]
    history = model.fit_generator(train_generator,steps_per_epoch=nb_train_samples // batch_size, epochs=epochs, validation_data=validation_generator, callbacks=callbacks_list, validation_steps=nb_validation_samples // batch_size, verbose=1)
    

解決方案 1(在培訓結束時):

您可以嘗試在訓練結束時使用以下代碼段分別保存權重和模型架構。

from tensorflow.keras.models import model_from_json
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
model.save_weights("model.h5")

解決方案 2(在培訓期間):

我們可以觀察到模型架構在訓練期間沒有改變,只有權重。 因此,您可以使用此檢查點在訓練期間僅保存最佳權重,並在訓練開始/結束時僅保存model_from_json

checkpoint = ModelCheckpoint(filepath1, 
                             monitor='val_acc',
                             verbose=1,
                             save_best_only=True, 
                             save_weights_only=True, 
                             mode='max')
 ....training runs..... ...................... ....training ends.....
from tensorflow.keras.models import model_from_json
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)

如果沒有保存任何內容,請確保您擁有正確的filepath1

暫無
暫無

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

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