title: TensorFlow restore throwing "No Variable to save" error
body: <p>I am working through some code to understand how to save and restore checkpoints in tensorflow. To do so, I implemented a simple neural netowork that works with MNIST digits and saved the .ckpt file like so:</p>
  
  <pre><code>    from tensorflow.examples.tutorials.mnist import input_data
  import numpy as np
  
  learning_rate = 0.001
  n_input = 784 # MNIST data input (img shape = 28*28)
  n_classes = 10 # MNIST total classes 0-9
  
  #import MNIST data
  mnist = input_data.read_data_sets('.', one_hot = True)
  
  #Features and Labels 
  features = tf.placeholder(tf.float32, [None, n_input])
  labels = tf.placeholder(tf.float32, [None, n_classes])
  
  #Weights and biases
  weights = tf.Variable(tf.random_normal([n_input, n_classes]))
  bias = tf.Variable(tf.random_normal([n_classes]))
  
  #logits = xW + b
  logits = tf.add(tf.matmul(features, weights), bias)
  
  #Define loss and optimizer
  cost = tf.reduce_mean(\
    tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=labels))
  optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\
  .minimize(cost)
  
  
  # Calculate accuracy
  correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(labels, 1))
  accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
  
  
  import math
  
  save_file = './train_model.ckpt'
  batch_size = 128
  n_epochs = 100
  
  saver = tf.train.Saver()
  
  # Launch the graph
  with tf.Session() as sess:
      sess.run(tf.global_variables_initializer())
  
      # Training cycle
      for epoch in range(n_epochs):
          total_batch = math.ceil(mnist.train.num_examples / batch_size)
  
          # Loop over all batches
          for i in range(total_batch):
              batch_features, batch_labels = mnist.train.next_batch(batch_size)
              sess.run(
                  optimizer,
                  feed_dict={features: batch_features, labels: batch_labels})
  
          # Print status for every 10 epochs
          if epoch % 10 == 0:
              valid_accuracy = sess.run(
                  accuracy,
                  feed_dict={
                      features: mnist.validation.images,
                      labels: mnist.validation.labels})
              print('Epoch {:&lt;3} - Validation Accuracy: {}'.format(
                  epoch,
                  valid_accuracy))
  
      # Save the model
      saver.save(sess, save_file)
      print('Trained Model Saved.')
  </code></pre>
  
  <p>This part works well, and I get the .ckpt file saved in the correct directory. The problem comes in when I try to restore the model in an attempt to work on it again. I use the following code to restore the model:</p>
  
  <pre><code>saver = tf.train.Saver()
  
  with tf.Session() as sess:
    saver.restore(sess, 'train_model.ckpt.meta')
    print('model restored')
  </code></pre>
  
  <p>and end up with the error: <code>ValueError: No variables to save</code></p>
  
  <p>Not too sure, what the mistake here is. Any help is appreciated. Thanks in advance</p>