如何在Tensorflow中暂停/恢复培训

如何在Tensorflow中暂停/恢复培训,tensorflow,Tensorflow,此问题是在保存和还原文档可用之前提出的。 现在,我会考虑这个问题,并称人们依赖于官方文件 旧问题的要点: 我得到了TF为公司工作得很好。我变了 保存列车目录的代码(带有检查点和 模型)到一个已知的位置 这就引出了我的问题:我如何暂停并继续一些 使用TF进行培训 TensorFlow使用类似于图形的计算、节点(OP)和边(变量又称状态),它为其变量提供了一个保护程序 因此,由于它是分布式计算,您可以在一台计算机/处理器中运行图形的一部分,而在另一台计算机/处理器中运行其余部分,同时您可以保存状态(

此问题是在保存和还原文档可用之前提出的。 现在,我会考虑这个问题,并称人们依赖于官方文件

旧问题的要点:

我得到了TF为公司工作得很好。我变了 保存
列车目录的代码(带有检查点和
模型)到一个已知的位置

这就引出了我的问题:我如何暂停并继续一些 使用TF进行培训


TensorFlow使用类似于图形的计算、节点(OP)和边(变量又称状态),它为其变量提供了一个
保护程序

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

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)
还原保存的VAR

使用tf.train.MonitoredTrainingSession()帮助我在机器重新启动时恢复训练。 要记住的事情:
  • 确保您正在保存检查点。在tf.train.saver()中,可以指定要保留的最大检查点
  • 指定tf.train.MonitoredTrainingSession(checkpoint='dir\u path',save\u checkpoint\u secs=)中检查点的目录。 基于save_checkpoint_secs参数,上述会话将继续保存和更新检查点
  • 当您不断保存检查点时,上述函数将查找最新的检查点并从那里恢复培训

  • 正如哈米德所描述的,在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)
    

    这将加载上次保存模型的位置,并仅从那里加载培训(如果需要)。

    1.打开检查点文件并从中删除不需要的模型。 2.将
    model\u checkpoint\u 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.同时删除文件,然后删除事件文件(如果存在),然后您可以运行培训。
    培训将从模型文件夹中存在的最后一个最佳保存模型开始。如果不存在模型文件,培训将从开始开始。

    使用此命令tf.train.Saver.restore(sess,save_path)将导致错误,因为还原方法需要一个Saver实例。