首页 > 解决方案 > 在 Keras 中保存最佳权重和模型

问题描述

我正在使用带有 Tensorflow 后端的 Keras API 来训练 DL 模型。我正在使用 ModelCheckPoint 来监控验证准确性,如果有改进,则只存储权重。在这个过程中,我最终将模型架构存储为 JSON 和每次改进的权重。我最终加载了最佳权重和模型架构来预测测试数据。这是我的代码:

    filepath="weights-improvement-{epoch:02d}-{val_acc:.2f}.hdf5"
    checkpoint = ModelCheckpoint(filepath, 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)
    model_json = model.to_json()
    with open("model.json", "w") as json_file:
        json_file.write(model_json)
    model.save('model_complete.h5')

我还尝试使用“model.save”保存整个模型,但是,这个保存的模型存储的不是最佳权重,而是在最后一个时期学到的权重,这绝对不是我的案例中学到的最佳权重。有没有办法将架构和最佳权重存储到单个模型文件中?

标签: pythontensorflowkerasdeep-learning

解决方案


这已经是ModelCheckpointas的默认行为save_weights_only=False。如果您查看源代码model.save,如果您没有指定它仅保存权重,您会看到它已经调用。


推荐阅读