2017-03-09 1 views
1

ich mein eigenes Faltungs neuronales Netz aufgebaut, in dem ich die gleitenden Durchschnitte aller trainierbar Variablen verfolgen (tensorflow 1.0):tensorflow Fehler: restore Prüfpunktdatei

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) 

Diese workes Fein- und Checkpoint-Dateien gespeichert sind (Sparversion V2). Dann versuche ich die Checkpoints in einem weiteren Skript zur Auswertung des Modells wiederherzustellen. Dort habe ich dieses Stück Code

# 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) 

, wo ich die Fehlermeldung „NotFoundError (oben für Rückverfolgungs e): Key KONV1/Variable/ExponentialMovingAverage nicht in Kontrollpunkt gefunden“, wo KONV1/Variable/ist eine Variable Umfang.

Dieser Fehler tritt auf, noch bevor ich versuche, die Variablen wiederherzustellen. Kannst du bitte helfen, es zu lösen?

Vielen Dank im Voraus

TheJude

Antwort

0

Ich löste es auf diese Weise:
Anruf tf.reset_default_graph() vor der zweiten ExponentialMovingAverage (...) in der Grafik erstellen.

# 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) 

Es dauerte 2 Stunden ...