每10个时间段tensorflow.keras v2保存模型

时间:2019-11-27 11:20:39

标签: python keras deep-learning tensorflow2.0 tf.keras

我正在使用tensorflow v2中定义为子模块的keras。我正在使用fit_generator()方法训练我的模型。我想每10个时间保存一次模型。我该如何实现?

在Keras(不是tf的子模块)中,我可以给ModelCheckpoint(model_savepath,period=10)。但是在tf v2中,他们已将其更改为ModelCheckpoint(model_savepath, save_freq),其中save_freq可以是'epoch',在这种情况下,每个时代都会保存模型。如果save_freq是整数,则在处理了这么多样本后将保存模型。但我希望在10个时代之后。我该如何实现?

2 个答案:

答案 0 :(得分:2)

使用tf.keras.callbacks.ModelCheckpoint使用save_freq='epoch'并传递一个额外的参数period=10

尽管official docs中没有对此进行记录,但这是这样做的方式(请注意,有记录表明您可以通过period,只是不解释其作用)。

答案 1 :(得分:0)

明确计算每个时期的批处理数量。

BATCH_SIZE = 20
STEPS_PER_EPOCH = train_labels.size / BATCH_SIZE
SAVE_PERIOD = 10

# Create a callback that saves the model's weights every 10 epochs
cp_callback = tf.keras.callbacks.ModelCheckpoint(
    filepath=checkpoint_path, 
    verbose=1, 
    save_weights_only=True,
    save_freq= int(SAVE_PERIOD * STEPS_PER_EPOCH))

# Train the model with the new callback
model.fit(train_images, 
          train_labels,
          batch_size=BATCH_SIZE,
          steps_per_epoch=STEPS_PER_EPOCH,
          epochs=50, 
          callbacks=[cp_callback],
          validation_data=(test_images,test_labels),
          verbose=0)