2017-03-09 17 views
1

私はすべてのトレーニング可能な変数(1.0 tensorflow)の移動平均を追跡している私自身の畳み込みニューラルネットワークを、構築:tensorflowエラー:チェックポイントファイルを復元

variable_averages = tf.train.ExponentialMovingAverage(
     0.9999, global_step) 
variables_averages_op = variable_averages.apply(tf.trainable_variables()) 
train_op = tf.group(apply_gradient_op, variables_averages_op) 
saver = tf.train.Saver(tf.global_variables(), max_to_keep=10) 
summary_op = tf.summary.merge(summaries) 
init = tf.global_variables_initializer() 
sess = tf.Session(config=tf.ConfigProto(
     allow_soft_placement=True, 
     log_device_placement=False)) 
sess.run(init) 
# start queue runners 
tf.train.start_queue_runners(sess=sess) 

summary_writer = tf.summary.FileWriter(FLAGS.train_dir, sess.graph) 

# training loop 
start_time = time.time() 
for step in range(FLAGS.max_steps): 
     _, loss_value = sess.run([train_op, loss]) 
     duration = time.time() - start_time 
     start_time = time.time() 
     assert not np.isnan(loss_value), 'Model diverged with loss = NaN' 

     if step % 1 == 0: 
      # print current model status 
      num_examples_per_step = FLAGS.batch_size * FLAGS.num_gpus 
      examples_per_sec = num_examples_per_step/duration 
      sec_per_batch = duration/FLAGS.num_gpus 
      format_str = '{} step{}, loss {}, {} examples/sec, {} sec/batch' 
      print(format_str.format(datetime.now(), step, loss_value, examples_per_sec, sec_per_batch)) 
     if step % 50 == 0: 
      summary_str = sess.run(summary_op) 
      summary_writer.add_summary(summary_str, step) 
     if step % 10 == 0 or step == FLAGS.max_steps: 
      print('save checkpoint') 
      # save checkpoint file 
      checkpoint_file = os.path.join(FLAGS.train_dir, 'model.ckpt') 
      saver.save(sess, checkpoint_file, global_step=step) 

これは(細かいチェックポイントファイルが保存されているworkes節約バージョンV2)。次に、モデルを評価するためにnotherスクリプトでチェックポイントを復元しようとします。そこで私は、コード、私はエラーを取得

# Restore the moving average version of the learned variables for eval. 
variable_averages = tf.train.ExponentialMovingAverage(
    MOVING_AVERAGE_DECAY) 
variables_to_restore = variable_averages.variables_to_restore() 
saver = tf.train.Saver(variables_to_restore) 

のこの作品持っている「NotFoundError(トレースバックについては上記参照):キーCONV1 /変数/ ExponentialMovingAverageチェックポイントでは見られない」CONV1 /変数は、/変数のスコープです。

このエラーは、変数を復元しようとする前に発生します。あなたはそれを解決するために助けてくださいできますか?事前に

おかげ

TheJude

答えて

0

私はこの方法でそれを解決:
コールtf.reset_default_graph()は前のグラフに二ExponentialMovingAverage(...)を作成します。

# reset the graph before create a new ema 
tf.reset_default_graph() 
# Restore the moving average version of the learned variables for eval. 
variable_averages = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY) 
variables_to_restore = variable_averages.variables_to_restore() 
saver = tf.train.Saver(variables_to_restore) 

それは私に2時間かかった...

関連する問題