乐趣区

关于人工智能:torchvision-的-transformsToTensor-干了什么事情

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() 解决后,将解决后的数据还原成一张图片并展现进去。

退出移动版