2017-05-11 4 views
1

私はTensorFlowを試しています。私はちょうどそれに直面している問題に関してquestionを投稿しました。しかし、私は理論的にはもっと疑問があるかもしれませんが、実際的な結果があります。TensorFlow:前のエポックの重みを覚えてください

モデルをトレーニングするときに、精度が異なることがあります。したがって、最後のエポックが最高の精度を示さないことがあります。例えば、エポックNでは85%の精度を有するが、最後のエポックでは65%の精度が得られる。私はNエポックの重みを使用して予測したいと思います。

私は、後で使用するための最高精度でエポックの重み値を記憶する方法があるのだろうかと思っていましたか?

非常に最初とシンプルなアプローチウォールドがあること:

  1. 実行Nエポック
  2. 我々は1と同じ精度を示しエポックに到達するまで、最高の精度
  3. Remembererトレーニングを再起動しますステップ2.
  4. に保存されているが、現在のweigths

より良い1がありを使用して予測しますか?

答えて

1

はい!トレーニングプロセスを通じてsaver and save your session periodicallyを作成する必要があります。あなたは最高の実行反復に対してあなたのモデルをテストしたいときに

model = my_model() 
saver = tf.train.Saver() 
with tf.Session() as sess: 
    sess.run(init_op) 
    for epoch in range(NUM_EPOCHS): 
     for batch in range(NUM_BATCHES): 

      # ... train your model ... 

      if batch % VALIDATION_FREQUENCY == 0: 
       # Periodically test against a validation set. 
       error = sess.run(model.error, feed_dict=valid_dict) 
       if error < min_error: 
        min_error = error # store your best error so far 
        saver.save(sess, MODEL_PATH) # save the best-performing network so far 

:擬似コードの実装は次のようになります

saver.restore(sess, MODEL_PATH) 
test_error = sess.run(model.error, feed_dict=test_dict) 

同様metagraphsの保存と読み込みにthis tutorialをチェックしてください。私はあなたのユースケースに応じて少しトリッキーなローディングのステップを見つけました。

関連する問題