在写pytorch代码时,遇到问题:加载预训练模型时在验证集上测试的psnr结果与训练时验证集的psnr差异特别大。
源代码:
pretrained_dict = torch.load('epochG_515.pth')
net.load_state_dict(pretrained_dict)
net = prepare(net)
valdata = Data(root=os.path.join(args.dir_data, args.data_val), args=args, train=False)
valset = DataLoader(valdata, batch_size=1, shuffle=False, num_workers=1)
val_psnr = 0
val_ssim = 0
with torch.no_grad():
timer_test = util.timer()
for batch, (lr, hr, filename) in enumerate(valset):
lr, hr = prepare(lr), prepare(hr)
sr = net(lr)
print(sr.shape, hr.shape)
val_psnr = val_psnr + cal_psnr(hr[0].data.cpu(), sr[0].data.cpu())
val_ssim = val_ssim + cal_ssim(hr[0].data.cpu(), sr[0].data.cpu())
print("Test psnr: {:.3f}".format(val_psnr / (len(valset))))
print('Forward: {:.2f}s\n'.format(timer_test.toc()))
print(val_ssim / (len(valset)))
后面修改在测试前加上net.eval()
pretrained_dict = torch.load('epochG_515.pth')
net.

在使用PyTorch进行模型训练时,发现加载预训练模型后,在验证集上的PSNR(峰值信噪比)结果与训练时的验证集PSNR存在显著差异。经过检查,解决方案是在测试前对网络模型调用net.eval()来切换到评估模式。
最低0.47元/天 解锁文章
873

被折叠的 条评论
为什么被折叠?



