首页 文章

在Keras中保存最佳重量和型号

提问于
浏览
0

我正在使用带有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”保存整个模型,但是,这个保存的模型不存储最佳权重,而是在最后一个时期学到的权重,这绝对不是在我的情况下学到的最佳权重 . 有没有办法将架构和最佳权重存储到单个模型文件中?

1 回答

  • 1

    这已经是 ModelCheckpoint 的默认行为 save_weights_only=False . 如果您查看source,您将看到它已经调用 model.save 如果您没有指定它仅保存权重 .

相关问题