-2

I need to display the results of the tensorflow simple net prediction (a histogram of the network predictions), say, for example, for the TensorFlow tutorial code.

The problem is I can't display results of the prediction in a readable format for this purpose (numpy.ndarray would be ideal). Predictions 'y' come up as <tf.Tensor 'Softmax_3:0' shape=(?, 10) dtype=float32> and so far I haven't found a way of changing this format.

If anyone knows how to do that could you please advise me on that?

I've tried np.array(y) (still keeps the Tensor format inside of the array and y = tf.Variable([y], expected_shape = [55000,10])( throws an error TypeError: __init__() got an unexpected keyword argument 'expected_shape').

If this is of interest the code looks like that:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

x = tf.placeholder(tf.float32, [None, 784])

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)

y_ = tf.placeholder(tf.float32, [None, 10])

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.initialize_all_variables().run()

for _ in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
Massyanya
  • 2,844
  • 8
  • 28
  • 37
  • Possible duplicate of [How to print the value of a Tensor object in TensorFlow?](http://stackoverflow.com/questions/33633370/how-to-print-the-value-of-a-tensor-object-in-tensorflow) – Salvador Dali May 10 '17 at 18:01

1 Answers1

2

You have to run the session with target variable to get it in python array. (as same as train_step and accuracy). Do this :

pred_np = sess.run(y,feed_dict={x: mnist.test.images, y_: mnist.test.labels})

Now, pred_np is a numpy array. You can print/save/display it. Hope this helps.

Harsha Pokkalla
  • 1,792
  • 1
  • 12
  • 17