python - fit_generator() 以最小的验证损失保存模型

标签 python validation keras

我如何使用 keras 函数 fit_generator() 训练并同时保存具有最低验证损失的模型权重?

最佳答案

您可以在定义检查点时设置save_best_only=True:

from keras.callbacks import EarlyStopping, ModelCheckpoint
  
early_stop = EarlyStopping(
     monitor='loss',
     min_delta=0.001,
     patience=3,
     mode='min',
     verbose=1
)
checkpoint = ModelCheckpoint(
     'model_best_weights.h5', 
     monitor='loss', 
     verbose=1, 
     save_best_only=True, 
     mode='min', 
     period=1
)

现在拟合模型时只需包含参数 callbacks = [early_stop,checkpoint]。它将保存具有最低验证损失的权重。

model.fit_generator(X_train, Y_train, validation_data=(X_val, Y_val), 
      callbacks = [early_stop,checkpoint])

保存模型架构

如果您也想保存模型架构,则需要将模型序列化为 JSON:

model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)

最后用架构和权重加载模型:

# load json and create model
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
# load weights into new model
loaded_model.load_weights("model_best_weights.h5")
print("Loaded model from disk")
 
# evaluate loaded model on test data
loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
score = loaded_model.evaluate(X, Y, verbose=0)

请引用:https://machinelearningmastery.com/save-load-keras-deep-learning-models/

关于python - fit_generator() 以最小的验证损失保存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47814809/

相关文章:

Python 脚本在 Spyder 上运行,但如果我打开 .py 文件则不会运行

python - 如何使用 Python 将变量中的列值插入到 Postgres 中?

python - 使用 arr copy() 函数时得到错误答案

php - ColdFusion 和 PHP 之间有效/无效的电子邮件格式策略差异

python - 如何使用人体姿势估计生成骨骼 View ?

tensorflow - 如何使张量具有四维?

python - 如何向networkx中的边缘添加新属性?

python 生成关键字的直方图/帕累托图

jquery - 验证(bassistance 插件)必需(依赖回调)问题

php - 当模式无效时,如何禁用 DOMDocument::schemaValidate() 产生的警告?