如何将张量转换为TensorFlow中的一个numpy数组?

如何将Tensorflow与Python绑定一起使用张量转换为numpy数组?

Session.runeval返回的任何张量都是一个NumPy数组。

 >>> print(type(tf.Session().run(tf.constant([1,2,3])))) <class 'numpy.ndarray'> 

要么:

 >>> sess = tf.InteractiveSession() >>> print(type(tf.constant([1,2,3]).eval())) <class 'numpy.ndarray'> 

或者等同地:

 >>> sess = tf.Session() >>> with sess.as_default(): >>> print(type(tf.constant([1,2,3]).eval())) <class 'numpy.ndarray'> 

要从张量转换回numpy数组,您可以简单地在转换的张量上运行.eval()

你需要:

  1. 以某种格式(jpeg,png)将图像张量编码为二元张量
  2. 在会话中评估(运行)二进制张量
  3. 把二进制文件转换成stream
  4. 饲料到PIL图像
  5. (可选)用matplotlib显示图像

码:

 import tensorflow as tf import matplotlib.pyplot as plt import PIL ... image_tensor = <your decoded image tensor> jpeg_bin_tensor = tf.image.encode_jpeg(image_tensor) with tf.Session() as sess: # display encoded back to image data jpeg_bin = sess.run(jpeg_bin_tensor) jpeg_str = StringIO.StringIO(jpeg_bin) jpeg_image = PIL.Image.open(jpeg_str) plt.imshow(jpeg_image) 

这对我有效。 你可以在ipython笔记本上试试。 只要不要忘记添加以下行:

 %matplotlib inline 

也许你可以试试这个方法:

 import tensorflow as tf W1 = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) array = W1.eval(sess) print (array)