【问题标题】:How to Pause / Resume Training in Tensorflow如何在 Tensorflow 中暂停/恢复训练
【发布时间】:2016-02-14 20:22:38
【问题描述】:

这个问题是在保存和恢复文档可用之前提出的。 现在我认为这个问题已被弃用,并说人们要依赖Save and Restore上的官方文档

老问题的要点:

我的 TFCIFAR Tutorial 工作得很好。我变了 保存train_dir 的代码(带有检查点的目录和 模型)到一个已知的位置。

这让我想到了我的问题:我怎样才能暂停和恢复一些 使用 TF 进行训练?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    1.打开检查点文件并从中删除不需要的模型。 2.将model_checkpoint_path设置为您想要继续使用的最后一个最佳模型。 文件内容是这样的:

    model_checkpoint_path: "model_gs_043k"
    all_model_checkpoint_paths: "model_gs_041k"
    all_model_checkpoint_paths: "model_gs_042k"
    all_model_checkpoint_paths: "model_gs_043k"
    

    这里,从model_gs_043k继续

    3. 也删除文件,然后删除事件文件(如果存在),然后您就可以开始训练了。 训练将从模型文件夹中存在的最后一个最佳保存模型开始。如果没有模型文件,则从头开始训练。

    【讨论】:

      【解决方案2】:

      正如 Hamed 所描述的,在 tensorflow 上正确的做法是

          saver=tf.train.Saver()
          save_path='checkpoints/'
          -----> while training you can store using
          saver.save(sess=session,save_path=save_path)
          -----> and restore
          saver.restore(sess=session,save_path=save_path)
      

      这将加载您上次保存的模型,并且仅从那里进行训练(如果需要)。

      【讨论】:

        【解决方案3】:

        使用 tf.train.MonitoredTrainingSession() 帮助我在机器重启时恢复训练。

        注意事项:

        1. 确保您正在保存检查点。在 tf.train.saver() 中,您可以指定要保留的 max_checkpoints。
        2. 在 tf.train.MonitoredTrainingSession(checkpoint='dir_path',save_checkpoint_secs=) 中指定检查点的目录。 基于 save_checkpoint_secs 参数,上述会话将继续保存和更新检查点。
        3. 当您不断保存检查点时,上述功能会查找最新的检查点并从那里恢复训练。

        【讨论】:

          【解决方案4】:

          TensorFlow 使用类图计算、节点(Ops)和边(变量又名状态),它为它的 Vars 提供了一个Saver

          因此,由于它是分布式计算,您可以在一台机器/处理器中运行图的一部分,而在另一台机器/处理器中运行其余部分,同时您可以保存状态(Vars)并在下次提供它以继续您的工作。

          saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0'
          ...
          saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000'
          

          以后你可以使用它

          tf.train.Saver.restore(sess, save_path)
          

          恢复您保存的变量。

          Saver Usage

          【讨论】:

          • 使用这个命令 tf.train.Saver.restore(sess, save_path) 会报错,因为restore方法需要一个Saver实例。
          猜你喜欢
          • 1970-01-01
          • 2020-09-10
          • 1970-01-01
          • 1970-01-01
          • 2020-08-15
          • 2018-07-28
          • 2020-10-22
          • 2021-06-24
          • 2018-02-08
          相关资源
          最近更新 更多