2017-02-23 89 views
0

我一直在使用tensorflow主管(https://www.tensorflow.org/programmers_guide/supervisor)从已保存的检查点加载模型,以进行培训和运行网络。但是我注意到,即使在运行/评估模型(graph.pbtxt,model.ckpt.data文件的时间戳和更新的events.out)时检查点文件也会更新。Tensorflow监督员的培训和评估操作?

这让我想知道是否使用主管来运行/评估模型重置/改变训练状态?除了培训以外,建议使用主管?

列车 -

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. 

回答

1

您的模型通常保存为文件名'model.ckpt-NUM'。只要评估没有更新该文件(而且不应该),那么你就很安全。

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

E.g.为了评估,请选择摘要名称'eval/' +metric_name,并且对于培训'train/' +metric_name,例如,请参阅herehere

编辑: 您还可以选择不同的目录(“logdir”),用于存储评估结果,如图here

+0

谢谢你的API。评估代码更改了model.ckpt文件的时间戳。为什么? – Achilles

+0

查看我最后的编辑,有帮助吗? – yuval

+0

谢谢,是的。我担心训练数据(存储在模型*文件中,我假设)。评估 - '在sess.run(y_conv,feed_dict = {x:xtest,keep_prob:1.0})中的yconv:' - 似乎更新这些模型*文件(至少是他们的时间戳),我想知道为什么以及这些更改是否会影响训练以某种方式存储在文件中的数据。理想情况下,它应该只是以只读模式访问它们。感谢有关使用不同目录的建议,我可以尝试一些中间过程,将经过训练的模型复制以进行评估(但我希望在没有它的情况下可以使用)。 – Achilles