【问题标题】:Resuming training with fit resets batch step to 0使用 fit 恢复训练会将批处理步骤重置为 0
【发布时间】:2020-11-12 11:28:25
【问题描述】:

我最近重写了我的 TensorFlow 2 自定义训练循环以使用 fit,使用 ModelCheckpoint 回调来管理我之前在循环中手动执行的检查点。这一切都很好,但我有一个一直在努力解决的问题:在正确的批处理步骤中恢复训练。我将TensorBoard 回调与update_freq=50 一起使用,当我恢复训练(从保存的检查点加载权重)时,我通常会看到如下内容:

以上结果来自 2 次运行,单个 epoch 包含 250 个批处理步骤(只是一个玩具数据集)。第一行是 2 个 epoch 的第一次运行,在 500 步后结束(摘要每 50 步更新一次,但不是在最后一步之后,大概,所以在 500 处的最后一步丢失了)。中间的直线只是绘制到第二次运行开始的图形线,由底线表示。我运行了 3 个 epoch,因此有 750 个批处理步骤 (250 * 3)。

问题是每次重新开始训练时步数都会从 0 重新开始。我怎样才能解决这个问题?大概是 TensorBoard 回调从 0 开始跟踪每个时期的步骤... fit 方法有一个 initial_epoch 参数,我用它在正确的时期重新启动,但是是否可以跟踪全局批处理步骤?我在旧的(TF2 之前的)代码中看到了global_step,是用来实现这个的吗?

【问题讨论】:

    标签: tensorflow machine-learning keras tensorflow2.0 tensorboard


    【解决方案1】:

    好的,似乎管理这个的方法是通过 runs 的概念,这相当于为不同的培训课程创建单独的日志子目录 - 如 this Colab notebook 所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多