Ich habe gelernt, auf Tensorflow (MNIST) und ich habe die Gewichte in einem .ckpt gespeichert. Nun möchte ich mein neuronales Netzwerk auf diese Gewichte testen, wobei die gleichen Bilder von ein paar Pixeln nach rechts und unten übersetzt werden. Die Ladegewichte funktionieren gut, aber wenn ich ein Eval drucke, zeigt Tensorflow immer die gleichen Ergebnisse an (0,9630 für den Test), egal wie die Übersetzung von 1 oder 14px ist. Hier ist mein Code für die Funktion, die die eval drucken:Shift Bilder nach rechts in TensorFlow
def eval_translation(sess, eval_correct, images_pl, labels_pl, dataset):
print('Test Data Eval:')
for i in range(28):
true_count = 0 # Counts the number of correct predictions.
steps_per_epoch = dataset.num_examples // FLAGS.batch_size
nb_exemples = steps_per_epoch * FLAGS.batch_size
for step in xrange(steps_per_epoch):
images_feed, labels_feed = dataset.next_batch(FLAGS.batch_size)
feed_dict = {images_pl: translate_right(images_feed, i), labels_pl: labels_feed}
true_count += sess.run(eval_correct, feed_dict=feed_dict)
precision = true_count/nb_exemples
print('Translation: %d Num examples: %d Num correct: %d Precision @ 1: %0.04f' % (i, nb_exemples, true_count, precision))
Dies ist die Funktion, die mit mir die Daten geladen werden und die mit mir die Testergebnisse drucken. Hier ist meine Übersetzungsfunktion:
def translate_right(images, dev):
for i in range(len(images)):
for j in range(len(images[i])):
images[i][j] = np.roll(images[i][j], dev)
return images
ich diese Funktion anstelle des Lernens nach alle Variablen initialisieren nur rufen:
with tf.Graph().as_default():
# Generate placeholders for the images and labels.
images_placeholder, labels_placeholder = placeholder_inputs(FLAGS.batch_size)
# Build a Graph that computes predictions from the inference model.
weights, logits = mnist.inference(images_placeholder, neurons)
# Add to the Graph the Ops for loss calculation.
loss = mnist.loss(logits, labels_placeholder)
# Add to the Graph the Ops that calculate and apply gradients.
train_op = mnist.training(loss, learning_rate)
# Add the Op to compare the logits to the labels during evaluation.
eval_correct = mnist.evaluation(logits, labels_placeholder)
# Build the summary operation based on the TF collection of Summaries.
summary_op = tf.merge_all_summaries()
# Create a saver for writing training checkpoints.
save = {}
for i in range(len(weights)):
save['weights' + str(i)] = weights[i]
saver = tf.train.Saver(save)
# Create a session for running Ops on the Graph.
sess = tf.Session()
init = tf.initialize_all_variables()
sess.run(init)
# load weights
saver.restore(sess, restore_path)
# Instantiate a SummaryWriter to output summaries and the Graph.
summary_writer = tf.train.SummaryWriter(FLAGS.train_dir, sess.graph)
temps_total = time.time()
eval_translation(sess, eval_correct, images_placeholder, labels_placeholder, dataset.test)
Ich weiß nicht, was mit meinem Code falsch ist, und warum Tensorflow scheint meine Bilder zu ignorieren. Kann mir bitte jemand helfen? Danke!
Thank you! Ich dachte, dass meine Übersetzung funktionierte (ich habe die Bilder angezeigt und die Übersetzung gesehen), aber mit der Achse arg funktioniert es gut und Tensorflow gibt die korrekten Werte aus! – Liam