有可能在TF/Keras中保存X时代之后的最佳模型吗



我的模型运行得很快,但它们似乎慢了下来,因为我正在保存最好的模型(在另一个进程中加载(;但我注意到保存过程本身会减慢处理速度。在拟合的早期阶段,每次迭代都在改进,增加了越来越多的延迟。

我想知道是否有一种方法可以在X时代之后保存最好的模型,或者将其保存在后台,这样模型训练就不会因为保存太频繁而延迟?

为了清楚起见,以下是我在Keras/TF2:中运行ModelCheckpoint的方式

filepath="BestModel.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True, mode='min')
callbacks_list = [checkpoint]
# fit the model
model.fit(x, y, epochs=40, batch_size=50, callbacks=callbacks_list)

您可以使用ModelCheckpoint回调的save_freq参数来控制保存频率。默认情况下,它被设置为'epoch',这意味着它将在每个历元结束时保存模型;但是,它也可以设置为一个整数,该整数决定保存模型时要传递的批数。以下是文件的相关部分供参考:

save_freq'epoch'或整数。当使用'epoch'时,回调会在每个epoch之后保存模型。当使用integer时,回调会在这么多批处理结束时保存模型。如果Model是用experimental_steps_per_execution=N编译的,则每N批都会检查保存条件。请注意,如果保存与历元不一致,则监控的度量可能不太可靠(它可能只反映1个批次,因为度量在每个历元都会重置(。默认为'epoch'

相关内容

最新更新