我正在将Keras API与Tensorflow后端一起使用来训练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”保存整个模型,但是,此保存的模型存储的不是最佳权重,而是在最后一个时期学习的权重,这绝对不是我所学习的最佳权重。有没有办法将架构和最佳权重存储到单个模型文件中?
答案 0 :(得分:3)
这已经是ModelCheckpoint
作为save_weights_only=False
的默认行为。如果您查看source,如果您未指定仅保存权重,则它会调用model.save
。