2017-02-23 6 views
0

私はテンソルフローのスーパーバイザ(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) 

ラン/だけ評価します。私たちは、以下のモデルは、通常、ファイル名「model.ckpt-NUM」に保存されているモデル

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

の訓練を受けた状態を変更する必要はありません。評価がそのファイルを更新しない限り、あなたは安全です。

ロギング/サマリーの上書きが心配な場合は、要約名の選択には注意が必要です。

など。評価のために、要約名'eval/' +metric_nameを選択し、トレーニング'train/' +metric_nameの場合は、たとえばhereおよびhereを参照してください。 here

+0

感謝を示すAPIののように、評価結果を格納するための あなたはまた、別のディレクトリを選択することができます(「logdir」):

EDIT。評価コードは、model.ckptファイルのタイムスタンプを変更します。それはなぜですか? – Achilles

+0

私の最後の編集を参照してください、それは役に立ちますか? – yuval

+0

ありがとうございます。私はトレーニングデータ(モデル*ファイルに保存されていると思います)を心配しています。評価 - 'sess.runのyconv(y_conv、feed_dict = {x:xtest、keep_prob:1.0}):' - これらのモデル*ファイル(タイムスタンプ以上)を更新するようですが、なぜ変更がトレーニングに影響するのでしょうか?何らかの方法でファイル内に格納されたデータ。理想的には、読み取り専用モードでアクセスするのが理想的です。別のディレクトリを使用することを提案してくれてありがとう、私は評価のために訓練されたモデルをコピーするいくつかの中間プロセスを試してみることもできます(しかし、それがなくてもうまくいくと思っています)。 – Achilles

関連する問題