【问题标题】:Tensorflow supervisor for both training and evaluating operations?用于培训和评估操作的 TensorFlow 主管?
【发布时间】:2017-02-23 05:06:11
【问题描述】:

我一直在使用 tensorflow 主管 (https://www.tensorflow.org/programmers_guide/supervisor) 从保存的检查点加载模型,用于训练和运行网络。但我注意到,即使在运行/评估模型时检查点文件也会更新(graph.pbtxt、model.ckpt.data 文件的时间戳已更新并创建了新的 events.out)。

这让我想知道使用主管运行/评估模型是否也会重置/更改训练状态?是否建议将主管用于培训以外的任何事情?

火车-

sv = tf.train.Supervisor(logdir=mylogdir)
with sv.managed_session() as sess:
    if not sv.should_stop(): 
        train_step.run(feed_dict={x: xtrain, y_: ytrain, keep_prob: 0.5}, session= sess)

仅运行/评估。我们不希望下面的内容修改模型的训练状态

sv = tf.train.Supervisor(logdir=mylogdir)    
with sv.managed_session() as sess:
    for yconv in sess.run(y_conv, feed_dict={x: xtest, keep_prob: 1.0}): 
        #use yconv to predict, evaluate etc. 

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    您的模型通常保存到名为“model.ckpt-NUM”的文件中。只要评估不更新该文件(它不应该),那么您就是安全的。

    如果您担心覆盖日志记录/摘要。您应该小心选择摘要名称。

    例如对于评估,请选择摘要名称'eval/' +metric_name,对于训练'train/' +metric_name,例如,请参阅herehere

    编辑: 您还可以选择不同的目录(“logdir”)来存储评估结果,如 API 中显示的here

    【讨论】:

    • 谢谢。评估代码更改了 model.ckpt 文件的时间戳。为什么会这样?
    • 谢谢,是的。我担心训练数据(我假设存储在模型*文件中)。评估 - yconv in sess.run(y_conv, feed_dict={x: xtest, keep_prob: 1.0}): - 似乎更新了这些模型* 文件(至少是它们的时间戳),我想知道为什么以及这些更改是否会以某种方式影响存储在文件中的训练数据。理想情况下,它应该只以只读模式访问它们。感谢有关使用不同目录的建议,我也可以尝试使用一些中间过程来复制训练好的模型进行评估(但我希望没有它也能工作)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多