2017-02-23 132 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