首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:无法在tf.image.per_image_standardization(x)之后将图像数据转换为浮点型

TypeError:无法在tf.image.per_image_standardization(x)之后将图像数据转换为浮点型
EN

Stack Overflow用户
提问于 2019-02-11 05:02:01
回答 1查看 1.6K关注 0票数 0

我在plt.imshow上收到以下错误

代码语言:javascript
复制
TypeError: Image data cannot be converted to float

对于此代码:

代码语言:javascript
复制
import keras
import tensorflow as tf
import matplotlib.pyplot as plt
mnist = keras.datasets.mnist

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

def preprocess(x):
    x = tf.image.per_image_standardization(x)
    return x

train_images = preprocess(train_images)
test_images = preprocess(test_images)

plt.figure()
plt.imshow(train_images[1])
plt.colorbar()
plt.grid(False)
plt.show()

你知道为什么会发生这种情况吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-02-11 17:21:18

在您的脚本中,train_images不包含实际数据,而仅仅是占位符张量:

代码语言:javascript
复制
train_images[1]
<tf.Tensor 'strided_slice_2:0' shape=(28, 28) dtype=float32>

最简单的解决方案是在脚本的顶部启用急切执行:

代码语言:javascript
复制
tf.enable_eager_execution()

这意味着在运行时,张量实际上将包含您试图绘制的数据:

代码语言:javascript
复制
train_images[1]
<tf.Tensor: id=95, shape=(28, 28), dtype=float32, numpy=
array([[-0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 ,
        -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 ,
        -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 ,
        -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 ,
        -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 , -0.4250042 ,
        -0.4250042 , -0.4250042 , -0.4250042 ], # etc

这应该可以解决你的错误。您可以在TF的website上阅读有关急切执行的更多信息。

或者,您也可以通过实际评估会话中的图像张量来绘制图表:

代码语言:javascript
复制
with tf.Session() as sess:
    img = sess.run(train_images[1])
    plt.figure()
    plt.imshow(img)
    plt.colorbar()
    plt.grid(False)
    plt.show()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54621034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档