tensorflow 如何将Tensor视为图像?

vcudknz3  于 2023-01-13  发布在  其他
关注(0)|答案(5)|浏览(190)

我用tensorflow 学了一些数据。
对于测试,我看到了最终结果的形状。
它是(1,80,80,1)的Tensor。
我使用matplotlib或PIL来做这个,
我想在更改为饼图数组后查看图像。
但我无法将Tensor更改为麻木。
由于会话的原因,即使我使用eval()也无法执行任何操作。
无法将Tensor转换为numpy。
我能看到Tensor的图像吗?

(mytensor1) # mytensor

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

但出现错误消息:TypeError:应为len〉= 0或单个整数的序列对象

iih3973s

iih3973s1#

你可以使用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)。

vecaoik1

vecaoik12#

对于使用PyTorch的人来说,我所知道的最简单的方法是这样的:

import matplotlib.pyplot as plt

plt.imshow(my_tensor.numpy()[0], cmap='gray')

这样就行了

uyto3xhc

uyto3xhc3#

Torch 是在形状的通道,高度,宽度需要转换成高度,宽度,通道,所以置换。

plt.imshow(white_torch.permute(1, 2, 0))

如果你愿意也可以直接

import torch
import torchvision
from torchvision.io import read_image
import torchvision.transforms as T

!wget 'https://images.unsplash.com/photo-1553284965-83fd3e82fa5a?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxleHBsb3JlLWZlZWR8NHx8fGVufDB8fHx8&w=1000&q=80'  -O white_horse.jpg

white_torch = torchvision.io.read_image('white_horse.jpg')

T.ToPILImage()(white_torch)

a8jjtwal

a8jjtwal4#

如果映像只有一个通道(即:白色),也可以使用plt.matshow

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

kq0g1dla5#

将Tensor转换为np数组,并按如下所示对其进行整形,然后将其更改为3通道图像

def tensorToImageConversion(Tensor):
    # if it doesn't work remove *255 and try it 
    Tensor = Tensor*255
    Tensor = np.array(Tensor, dtype=np.uint8)
    if np.ndim(Tensor)>3:
        assert Tensor.shape[0] == 1
        Tensor = Tensor[0]
    return PIL.Image.fromarray(Tensor)

相关问题