在 Pytorch 框架下,Debug 过程中通常要将 Tensor 转换为 Image 查看结果,所以会定义下面的函数。
def tensor2Image(image_tensor, imtype=np.uint8):
image_numpy = image_tensor[0].cpu().float().numpy()
image_numpy = (np.transpose(image_numpy, (1, 2, 0)) + 1) / 2.0 * 255.0
return image_numpy.astype(imtype)
函数中的 transpose 写法取决于 Load 的 Image Normalize 的方式,上面函数中 transforms.Normalize 使用如下公式进行归一化,将数据中的每个值变成 [-1,1] 的范围。
channel=(channel-mean)/std
transform_list = [transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]
下面是将 Tensor 转换为 Image 的测试代码。
from PIL import Image
Img = tensor2Image(data['train'])
im_out = Image.fromarray(Img)
im_out.save("your_file.jpeg")
网友评论