共计 932 个字符,预计需要花费 3 分钟才能阅读完成。
Q:torchvision 的 transforms.ToTensor 干了什么事件?
A:torchvision 的 transforms.ToTensor() 是将 PIL Image 或 numpy.ndarray 转化成 torch.FloatTensor 数据类型的办法。这个办法的次要性能是:
- 将 PIL Image 或 numpy.ndarray 转化成 torch.FloatTensor 数据类型。
- 像素值在 0-255 范畴内的 PIL Image 或 numpy.ndarray 在被转化成 torch.FloatTensor 时,会主动除以 255,使其像素值在 0-1 之间。
- 如果像素值曾经在 0-1 范畴内,那么就不会主动除以 255。
简而言之,transforms.ToTensor() 的作用是将输出的 PIL Image 或 numpy.ndarray 转换为 Tensor 类型,并且进行标准化操作,不便神经网络的训练。因为神经网络须要的输出数据类型个别是 FloatTensor 类型,且须要进行标准化,这个过程经常应用 transforms.ToTensor() 办法来实现。
Q:torchvision 的 transforms.ToTensor() 解决过的数据,还能还原回一张图片吗?
A: 能够通过 transforms.ToPILImage() 将解决后的数据转换为 PIL 图像格式,从而还原回一张图片。例如:
from torchvision import transforms
from PIL import Image
# 读取图片
image = Image.open('example.jpg')
# 对图片进行 transforms.ToTensor() 解决
preprocess = transforms.Compose([transforms.ToTensor()
])
tensor = preprocess(image)
# 将解决后的数据还原成一张图片
to_pil = transforms.ToPILImage()
image_restored = to_pil(tensor)
image_restored.show()
这段代码会将一张名为 example.jpg 的图片读入,通过 transforms.ToTensor() 解决后,将解决后的数据还原成一张图片并展现进去。
正文完