Keras:如何在一次训练中节省模型权重?

时间:2019-06-09 07:23:58

标签: python keras

我正在Keras训练CNN。每个时期大约需要18个小时。我需要每半小时保存一次模型权重,因为我无法连续运行18个小时。

我尝试使用带有period = 0.0125的检查点来保存模型权重。我认为这样可以节省每100个训练示例的模型权重(假设总共有8000个训练示例)

cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, verbose=1, save_weights_only=True,period=0.0125)

model.fit_generator(
    training_set,
    steps_per_epoch=8400,
    epochs=25,
    callbacks = [cp_callback],
    validation_data=test_set,
    validation_steps=2165)

1 个答案:

答案 0 :(得分:1)

ModelCheckpoint在每个时期后保存模型。周期是各个时期之间的间隔,不在该时期内。

一个可行的解决方案是编写您自己的自定义回调,该回调可在每个批次结束或开始时保存权重。

class myCallback(keras.callbacks.Callback):
def on_batch_end(self, batch,logs={}):
    self.model.save_weights('D:/downloads/model_batch'+str(batch)+'.hdf5')

callbacks1 = myCallback()

您可以根据您的问题应用任何条件,例如保存时间,保存内容等。希望这会有所帮助