【问题标题】:Since it is not "checkpoint", what is the standard method for crash-recovery to resume TensorFlow 2.0 Training?既然不是“检查点”,那么崩溃恢复恢复 TensorFlow 2.0 训练的标准方法是什么?
【发布时间】:2020-04-18 06:46:27
【问题描述】:

要在崩溃后恢复训练,不仅必须恢复模型,还必须恢复进入model.fit(...) 进程状态的所有对象和参数。

在我费心 fork keras 代码来实现 fitting 对象之前,我想知道恢复崩溃恢复的标准方法(如果有的话)是什么TensorFlow 2.0 训练从哪里停下来。

或者有人真的填补了 TensorFlow 对象模型中这个明显的漏洞?

【问题讨论】:

    标签: tensorflow2.0 checkpointing


    【解决方案1】:

    检查点tf.keras.Model.fit() 进程的规范方法是ModelCheckpoint 回调。

    用法如下:

    mode.fit(..., callbacks=[tf.keras.callbacks.ModelCheckpoint(checkpoint_dir)]
    

    保存的检查点,默认在每个训练周期结束时生成,不仅包括模型的架构和权重值,还包括训练状态。有兴趣的可以研究一下它的源码here。保存的训练状态包括

    • 优化器配置
    • 优化器的权重变量值(用于有状态的优化器,例如 Adam)
    • 损失和指标配置

    这些是否涵盖了您心目中的所有训练状态?

    【讨论】:

    • 我设想的 fitting 对象检查点将检查拟合过程的整个状态,因此它可以通过 fitting.resume() 恢复。我想可以将参数传递给resume 方法来修改恢复,但那将是尾鳍。
    • 感谢您的回复。通常,当您从崩溃中恢复时,Python 训练代码可用。使用ModelCheckpoint 配置model.fit() 调用,程序将负责自动恢复先前保存的训练状态。但是,就您而言,检查点实际上是自包含的,无需原始训练 Python 代码即可加载。在上面的示例中,您可以执行model = tf.keras.models.load_model(checkpoint_dir),重构的model 对象立即准备好用于记住保存的训练状态的fit() 调用。
    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 2020-08-11
    • 2017-07-12
    • 2018-02-16
    • 2017-09-13
    • 2020-08-15
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多