save_best_only:如果save_best_only=True,它只在模型被认为是“最好的”时才会保存,而根据所监视的数量来表示的最新的最好的模型不会被覆盖。如果filepath不包含格式选项,如{ each },那么filepath将被每个新的更好的模型覆盖。
restore_best_weights:是否以监测量的最佳值从时代恢复模型权重。如果是假的,则使用训练的最后一步得到的模型权重。无论相对于基线的性能如何,都将恢复一个时代。如果没有划时代改善的底线,训练将运行耐心时代和恢复重量从最好的时代在那一套。
如果我训练我的模型,保存最好的模型,恢复最佳时代的权重.-我不是做了两次同样的事吗?它不只是生成两个模型文件,一个用于时代,一个用于最终模型,但两者实际上是相同的吗?
那么,如果这是正确的,哪一种将是首选的方法?(据我所知,模型有时保存在内存EarlyStopping中,但对model_checkpoint ModelCheckpoint并不确定)
发布于 2023-02-07 10:10:50
前者在验证集上表现最好的时期保存模型的权重,而后者将保存的权重恢复到模型中并用于预测。
当在培训期间使用ModelCheckpoint回调保存模型的权重时,权重将保存到指定检查点(例如,每个时代之后)的磁盘(例如,.h5文件)。保存权重的目的是为了以后的预测能够恢复它们,以防您由于某种原因而需要停止培训,或者如果您想在不同的数据集上使用这些权重进行推理。
一旦培训完成,您可以通过将其加载到模型体系结构中来恢复性能最好的模型的权重,然后使用该模型进行预测。
早期停止和使用ModelCheckpoint保存权重的区别在于,早期停止根据标准(验证集上的性能)自动保存权重,而ModelCheckpoint以指定的间隔(例如,在每个时代之后)保存权重。
因此,在早期停止的情况下,您不必指定何时保存权重,因为算法会自动停止训练,并在验证集上的性能停止改善时保存权重。另一方面,使用ModelCheckpoint,您可以更好地控制何时保存权重,但是当性能不再提高时,您必须手动停止训练。
总之,在培训期间保存权重允许您持久化模型的状态,以便您可以继续培训或使用模型进行以后的预测。
就首选方法而言,这取决于您的用例。如果内存有限,则只能将最佳模型的权重保存在内存中,并使用ModelCheckpoint定期将最佳权重保存到磁盘中。如果内存不是问题,您可以将所有中间模型保留在内存中,并在验证集上的性能停止改进后使用EarlyStopping停止培训。
https://datascience.stackexchange.com/questions/118230
复制相似问题