【问题标题】:Keras : How to save model weights while training within a single eopch?Keras:如何在单个时期内进行训练时保存模型权重?
【发布时间】:2019-06-09 07:23:58
【问题描述】:

我正在 Keras 训练一个 CNN。每个 epoch 大约需要 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)

【问题讨论】:

  • 我只使用 google colab,但每个 epoch 需要 18 小时。我该如何管理?

标签: python keras


【解决方案1】:

ModelCheckpoint 在每个 epoch 后保存模型。周期是不在纪元内的纪元之间的间隔。

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

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()

您可以应用任何条件,例如何时保存、保存什么等,具体取决于您的问题。希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2019-12-05
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多