Q1:测试集使用了Imagenet推荐的标准化,导致图像不清楚
test_transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])
ToTensor操作将(H,W,C)转化为了(C,H,W)
如果采用了这种标准化,显示的图片差异很大,因此在测试时需要将Normalize
注释,但是注释之后是会影响准确率的,比如本来90的准确率会变成70。
因此需要寻求一种方法,由于取batch的时候数据是已经经过标准化了的,所以无法从内部操作中反标准化。
所以需要求解反归一化的式子,但是呢这些均值和方差都是小数,反求解后还能定义为他两是一样的图片吗。
import torchvision.utils as vutils
import tensorboardX
writer = tensorboardX.SummaryWriter("pic")
for _, batch in enumerate(tqdm(test_loader)):
inputs, labels = batch
grid = vutils.make_grid(inputs.cpu(), nrow=32)
# 【CHW】-》【HWC】
img = np.transpose(grid,(1,2,0))
writer.add_image("imgs", img, _,dataformats='HWC')