第一部分:需求分析
将测试集的第一条转化为图片格式
第二部分:代码实现
import numpy as np
import pickle
from PIL import Image
import os
import torchvision.transforms as transforms
from torchvision.datasets import CIFAR10
# 创建保存图片的目录
os.makedirs('test', exist_ok=True)
# 修改生成图片的代码(添加归一化)
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)) # 添加训练时的归一化
])
testset = CIFAR10(root='./data', train=False, download=True, transform=transform)
image, label = testset[0]
# 反归一化以保存可视化的图片
mean = np.array([0.4914, 0.4822, 0.4465])
std = np.array([0.2023, 0.1994, 0.2010])
img = image.numpy().transpose(1, 2, 0)
img = (img * std + mean) * 255 # 反归一化并转到[0,255]
img = img.clip(0, 255).astype(np.uint8)
img_path = f'test/{label}_0.jpg'
print("生成结束")
Image.fromarray(img).save(img_path)
第三部分:效果
输出的label为3代表是猫。
(['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'])