我正在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)
答案 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()
您可以根据您的问题应用任何条件,例如保存时间,保存内容等。希望这会有所帮助