我正在使用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个时代之后。我该如何实现?
答案 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)