我正在尝试使用Tensorflow加载文件并使结果可视化,但出现TypeError:图像数据无法转换为float
import tensorflow as tf
import matplotlib.pyplot as plt
image = tf.io.read_file('./my-image.jpg')
image = tf.io.decode_jpeg(image, channels=3)
print(image.shape) # (?, ?, 3)
plt.imshow(image)
答案 0 :(得分:2)
不确定您的Tensorflow版本。 TensorFlow默认在1.x
中使用静态计算图。您获得的image
的数据类型为Tensor
,因此将显示此错误。首先创建自定义图片。
import numpy as np
from PIL import Image
np.random.seed(0)
image = np.random.random_sample(size=(256,256,3))
im = Image.fromarray(image, 'RGB')
im.save('my-image.jpg')
然后,您需要使用tf.Session()
开始此会话。这将显示上面创建的图像。
import tensorflow as tf
import matplotlib.pyplot as plt
image = tf.io.read_file('my-image.jpg')
image = tf.io.decode_jpeg(image, channels=3)
print(image)
with tf.Session() as sess:
plt.imshow(sess.run(image))
plt.show()
# print
Tensor("DecodeJpeg:0", shape=(?, ?, 3), dtype=uint8)
或者您可以通过tf.enable_eager_execution()
在Tensorflow中启动动态计算图。上面的代码可以达到相同的效果。
import tensorflow as tf
import matplotlib.pyplot as plt
tf.enable_eager_execution()
image = tf.io.read_file('my-image.jpg')
image = tf.io.decode_jpeg(image, channels=3)
plt.imshow(image)
plt.show()
tensorflow2中的默认值是动态计算图。您无需使用tf.enable_eager_execution()
。