我的模型运行得很快,但它们似乎慢了下来,因为我正在保存最好的模型(在另一个进程中加载(;但我注意到保存过程本身会减慢处理速度。在拟合的早期阶段,每次迭代都在改进,增加了越来越多的延迟。
我想知道是否有一种方法可以在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'
。