【问题标题】:How can I view Tensor as an image?如何将张量视为图像?
【发布时间】:2019-12-24 09:31:59
【问题描述】:

我用 tensorflow 学习了一些数据。

为了测试,我看到了最终结果的形状。

它是 (1, 80, 80, 1) 的张量。

我使用 matplotlib 或 PIL 来做到这一点,

我想在更改为饼图数组后查看图像。

但我无法将张量更改为 numpy。

即使我使用了 eval(),由于会话,我也无法执行任何操作。

没有办法将张量转换为numpy。

我可以将张量视为图像吗?

(mytensor1) # mytensor

arr = np.ndarray(mytensor1)
arr_ = np.squeeze(arr)
plt.imshow(arr_)
plt.show()

但是有错误信息: TypeError: len >= 0 或单个整数的预期序列对象

【问题讨论】:

    标签: python tensorflow machine-learning


    【解决方案1】:

    你可以使用 numpy 的挤压功能。 例如

    arr = np.ndarray((1,80,80,1))#This is your tensor
    arr_ = np.squeeze(arr) # you can give axis attribute if you wanna squeeze in specific dimension
    plt.imshow(arr_)
    plt.show()
    

    现在,您可以轻松显示此图像(例如上面的代码,假设您使用的是matplotlib.pyplot as plt)。

    【讨论】:

    • 你能显示整个错误日志吗?另外,你的 mytensor1 的数据类型是什么?
    • 错误是“TypeError: len >= 0 或单个整数的预期序列对象”数据类型是 float32
    • @talos1904 请问,结果代表什么?如果我得到带有彩色像素的图像,那意味着什么吗?
    【解决方案2】:

    对于使用 PyTorch 的人,我知道的最简单的方法是:

    import matplotlib.pyplot as plt
    
    plt.imshow(my_tensor.numpy()[0], cmap='gray')
    

    应该这样做

    【讨论】:

    • 这是一个很好的灰度快速方法(尽管您可能必须在.numpy() 之前添加.cpu())。但是要以真实颜色显示图像,您可以这样做:plt.imshow(np.transpose(my_tensor.cpu().numpy(), (1,2,0)))。我从这个Kaggle notebook得到这个。
    • RuntimeError: Can't call numpy() on Tensor that requires grad.改用 tensor.detach().numpy() 。我收到此错误,可能是什么原因?
    【解决方案3】:

    如果你的图片只有一个通道(即:黑白),也可以使用plt.matshow

    image = np.random.uniform(0,1, (1,80,80,1))
    image = image.reshape(80,80)
    plt.matshow(image)
    plt.show() 
    

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 2021-05-25
      • 2018-12-14
      • 2020-12-21
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多