如何将张量转换为TensorFlow中的一个numpy数组?
如何将Tensorflow与Python绑定一起使用张量转换为numpy数组?
由Session.run
或eval
返回的任何张量都是一个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()
。
你需要:
- 以某种格式(jpeg,png)将图像张量编码为二元张量
- 在会话中评估(运行)二进制张量
- 把二进制文件转换成stream
- 饲料到PIL图像
- (可选)用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)