针对AttributeError: ‘tensorflow.python.framework.ops.EagerTensor‘ ....no attribute ‘reshape‘问题的解决办法。
在学习Mnist手写数据集的时候,遇到这种问题。使用Tensorflow2.2-gpu版本plt.figure(figsize=(20, 4))for i in range(1, n):ax = plt.subplot(2, n, i)plt.imshow(x_test[i].reshape(28, 28))ax = plt.subplot(2, n, i + n)plt.imshow(decod
·
操作系统:Win10,编译工具:notebook,语言:python
在学习Mnist手写数据集的时候,遇到这种问题。使用Tensorflow2.2-gpu版本
plt.figure(figsize=(20, 4))
for i in range(1, n):
ax = plt.subplot(2, n, i)
plt.imshow(x_test[i].reshape(28, 28))
ax = plt.subplot(2, n, i + n)
plt.imshow(decode_test[i].reshape(28, 28))
出现这种问题:
AttributeError: 'tensorflow.python.framework.ops.EagerTensor' object has no attribute 'reshape'
解决办法:因为这里x_test[i]是一个Tensor向量,而plt绘图工具,其期望输入的是一个numpy数组,而不是tensor对象,需要用numpy转换一下属性 ,再reshape。
n = 10
plt.figure(figsize=(20, 4))
for i in range(1, n):
ax = plt.subplot(2, n, i)
plt.imshow(np.array(x_test[i]).reshape(28, 28))
ax = plt.subplot(2, n, i + n)
plt.imshow(np.array(decode_test[i]).reshape(28, 28))
输出:
如果直接写成
x_test[i].numpy()
好像也是可以的,本人暂未尝试过。不过也有可能报错。其原因是numpy只在CPU上操作,而Tensor可以在CPU或GPU上操作。如果出现报错则可能是在测试的时候使用了GPU。可以改写成
x_test[i].cpu().numpy()
后,再reshape。
学习记录一下~
(2021.11.23日 发布第一版)
(2022.10.08日 修改内容: 添加了 输出 下面的内容,由于原始代码删除了,所以暂未尝试过~)
更多推荐
所有评论(0)