How to convert a tensor into a numpy array when using Tensorflow with Python bindings?

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

TensorFlow 2.x

Eager Execution is enabled by default, so just call .numpy() on the Tensor object.

import tensorflow as tf

a = tf.constant([[1, 2], [3, 4]])

b = tf.add(a, 1)

a.numpy()

# array([[1, 2],

# [3, 4]], dtype=int32)

b.numpy()

# array([[2, 3],

# [4, 5]], dtype=int32)

tf.multiply(a, b).numpy()

# array([[ 2, 6],

# [12, 20]], dtype=int32)

See NumPy Compatibility for more. It is worth noting (from the docs),

Numpy array may share memory with the Tensor object. Any changes to one may be reflected in the other.

Bold emphasis mine. A copy may or may not be returned, and this is an implementation detail based on whether the data is in CPU or GPU (in the latter case, a copy has to be made from GPU to host memory).

But why am I getting AttributeError: ‘Tensor’ object has no attribute ‘numpy’?.

A lot of folks have commented about this issue, there are a couple of possible reasons:

TF 2.0 is not correctly installed (in which case, try re-installing), or

TF 2.0 is installed, but eager execution is disabled for some reason. In such cases, call tf.compat.v1.enable_eager_execution() to enable it, or see below.

If Eager Execution is disabled, you can build a graph and then run it through tf.compat.v1.Session:

a = tf.constant([[1, 2], [3, 4]])

b = tf.add(a, 1)

out = tf.multiply(a, b)

out.eval(session=tf.compat.v1.Session())

# array([[ 2, 6],

# [12, 20]], dtype=int32)

See also TF 2.0 Symbols Map for a mapping of the old API to the new one.