如何在Keras中保存最佳和最新模型?

时间:2019-07-09 15:42:32

标签: python tensorflow keras

我想使用Keras Model检查点回调来保存最佳模型和最新模型。有没有一种方法可以解决此问题,而无需创建新的ModelCheckpoint类和修改on_epoch_end函数?

我当前使用的检查点是:

checkpter = keras.callbacks
    .ModelCheckpoint(checkpoint_dir + 'checkpt_{epoch:02d} + _.hdf5', monitor='val_loss',
                     verbose=1, save_best_only=True, save_weights_only=True, mode='auto',
                     period=1)

2 个答案:

答案 0 :(得分:1)

如果最新模型是指最后一个时期之后的模型,则只需保留Checkpoint函数不变并保存最终结果即可。

拟合模型后,添加以下代码行:

model.save('my_model.h5')

检查点功能将保存最佳模型,并且在完成训练后,无论结果如何,模型都将保存最后的时间。

答案 1 :(得分:0)

您可以创建一个新的callback函数来在每个时期保存模型。

class saveLatesModel(keras.callbacks.Callback):
    def __init__(self, modelSaveLocation='', modelName=''):
        super(keras.callbacks.Callback, self).__init__()
        self.modelSaveLocation = '..'
        self.modelName = '..'

    def on_epoch_end(self, epoch, logs={}):
        self.model.save(self.modelSaveLocation+self.modelName+'.hdf5', overwrite=True)