Friday, July 28, 2017

How to print the value of a Tensor object in TensorFlow?

def print_tf_obj(s, obj):
  np.set_printoptions(precision=3) 
  print(s + " = " + str(obj))

  
      print_tf_obj("boxes ", boxes)
      print_tf_obj("scores ", scores)
      print_tf_obj("classes ", classes)



https://www.tensorflow.org/versions/r0.12/resources/faq

What is the difference between Session.run() and Tensor.eval()?

If t is a Tensor object, t.eval() is shorthand for sess.run(t) (where sess is the current default session. The two following snippets of code are equivalent:
# Using `Session.run()`.
sess = tf.Session()
c = tf.constant(5.0)
print sess.run(c)
# Using `Tensor.eval()`.
c = tf.constant(5.0)
with tf.Session():
  print c.eval()
In the second example, the session acts as a context manager, which has the effect of installing it as the default session for the lifetime of the with block. The context manager approach can lead to more concise code for simple use cases (like unit tests); if your code deals with multiple graphs and sessions, it may be more straightforward to make explicit calls to Session.run().

https://www.hackingnote.com/en/tensorflow/overview/ 


https://stackoverflow.com/questions/2891790/how-to-pretty-printing-a-numpy-array-without-scientific-notation-and-with-given

import numpy as np
x=np.random.random(10)
print(x)
# [ 0.07837821  0.48002108  0.41274116  0.82993414  0.77610352  0.1023732
#   0.51303098  0.4617183   0.33487207  0.71162095]

np.set_printoptions(precision=3)
print(x)
# [ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]
And suppress suppresses the use of scientific notation for small numbers:
y=np.array([1.5e-10,1.5,1500])
print(y)
# [  1.500e-10   1.500e+00   1.500e+03]
np.set_printoptions(suppress=True)
print(y)
# [    0.      1.5  1500. ]
See the docs for set_printoptions for other options.

To apply print options locally, you could use a contextmanager:
import numpy as np
import contextlib

@contextlib.contextmanager
def printoptions(*args, **kwargs):
    original = np.get_printoptions()
    np.set_printoptions(*args, **kwargs)
    try:
        yield
    finally: 
        np.set_printoptions(**original)
For example, inside the with-suite precision=3 and suppress=True are set:
x = np.random.random(10)
with printoptions(precision=3, suppress=True):
    print(x)
    # [ 0.073  0.461  0.689  0.754  0.624  0.901  0.049  0.582  0.557  0.348]
But outside the with-suite the print options are back to default settings:
print(x)    
# [ 0.07334334  0.46132615  0.68935231  0.75379645  0.62424021  0.90115836
#   0.04879837  0.58207504  0.55694118  0.34768638]

To prevent zeros from being stripped from the end of floats:
np.set_printoptions now has a formatter parameter which allows you to specify a format function for each type.
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(x)
which prints
[ 0.078  0.480  0.413  0.830  0.776  0.102  0.513  0.462  0.335  0.712]
instead of
[ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]










No comments:

Post a Comment