SAFMN
SAFMN copied to clipboard
消融实验
您好,我想请教一些问题: 1、消融实验中SAFM模块是怎么验证的? 去掉的意思是完全不用这个模块还是 换成别的模块替代呢 2、您的特征图可视化是怎么做的呢? 非常希望您能解答我的疑惑,谢谢!
A ->None是完全不用A模块;A->B是指A用B替换 特征图可视化的伪代码如下:
feat = model(input)
feat = feat.squeeze().cpu().numpy()
feat = np.mean(feat, axis=0)
plt.figure()
plt.imshow(feat)
plt.savefig('./save_path/feat.png')
希望可以解答您的疑问。
非常感谢!
A ->None是完全不用A模块;A->B是指A用B替换 特征图可视化的伪代码如下:
feat = model(input) feat = feat.squeeze().cpu().numpy() feat = np.mean(feat, axis=0) plt.figure() plt.imshow(feat) plt.savefig('./save_path/feat.png')
希望可以解答您的疑问。
打扰了,我试了您的特征图可视化方法, 但为什么每次可视化的特征图都不一样呢?我是直接把图片输入模型然后可视化,是不是我这操作错误了?
你有加载预训练模型吗?
你有加载预训练模型吗?
确实忽略了这个。感谢大佬帮助
大佬,你好。请问下,我安照你的实验设置,并没有达到论文中的数值,有可能是显卡的问题嘛? 还有一个问题是:“F表示快速傅里叶变换,λ是一个权值参数,根据经验设置为0.05” 经验设置是实验出来的嘛?在你的 ShuffleMixer 论文中,λ=0.1
结果差很多吗?我之前让我师弟复现过,基本跟论文的一致。论文里的结果是用best_model测的不是latest_model。
FFT loss的权重是试验后设置的。
我用的是3060显卡,在windows系统上跑的。 在set5数据集差0.04db。谢谢大佬,有一直关注你的工作!
非常感谢你的关注。你要不选一下model😂应该结果就一致了。
好的好的,大佬,非常感谢你。
好的好的,大佬,非常感谢你。
不用客气,我们互相学习、多多交流。
大佬,小白再问一个问题,网络结构没变,训练的参数完全一致,随机种子也固定,为什么每次训练后的结果还是会有差别呢?还是这是正常现象呢?
大佬,小白再问一个问题,网络结构没变,训练的参数完全一致,随机种子也固定,为什么每次训练后的结果还是会有差别呢?还是这是正常现象呢?
这是正常的,主要是由于网络模型的权重和偏置是随机初始化的,随机种子只是决定了参数初始化的分布,这样每一次采样到的初始权重参数是不一样的,就会导致结果有些差别,但最终都会收敛到一个合理的范围内。
好的,谢谢!
大佬,小白再问一个问题,网络结构没变,训练的参数完全一致,随机种子也固定,为什么每次训练后的结果还是会有差别呢?还是这是正常现象呢?
这是正常的,主要是由于网络模型的权重和偏置是随机初始化的,随机种子只是决定了参数初始化的分布,这样每一次采样到的初始权重参数是不一样的,就会导致结果有些差别,但最终都会收敛到一个合理的范围内。
佬,我又冒出一个问题,既然训练不稳定, 那么消融实验怎么做呢?
大佬,小白再问一个问题,网络结构没变,训练的参数完全一致,随机种子也固定,为什么每次训练后的结果还是会有差别呢?还是这是正常现象呢?
这是正常的,主要是由于网络模型的权重和偏置是随机初始化的,随机种子只是决定了参数初始化的分布,这样每一次采样到的初始权重参数是不一样的,就会导致结果有些差别,但最终都会收敛到一个合理的范围内。
佬,我又冒出一个问题,既然训练不稳定, 那么消融实验怎么做呢?
同样的setting下,最终的结果是非常接近的,不会有多大的误差。
大佬,小白再问一个问题,网络结构没变,训练的参数完全一致,随机种子也固定,为什么每次训练后的结果还是会有差别呢?还是这是正常现象呢?
这是正常的,主要是由于网络模型的权重和偏置是随机初始化的,随机种子只是决定了参数初始化的分布,这样每一次采样到的初始权重参数是不一样的,就会导致结果有些差别,但最终都会收敛到一个合理的范围内。
佬,我又冒出一个问题,既然训练不稳定, 那么消融实验怎么做呢?
同样的setting下,最终的结果是非常接近的,不会有多大的误差。
orz !!
大佬,小白再问一个问题,网络结构没变,训练的参数完全一致,随机种子也固定,为什么每次训练后的结果还是会有差别呢?还是这是正常现象呢?
这是正常的,主要是由于网络模型的权重和偏置是随机初始化的,随机种子只是决定了参数初始化的分布,这样每一次采样到的初始权重参数是不一样的,就会导致结果有些差别,但最终都会收敛到一个合理的范围内。
佬,我又冒出一个问题,既然训练不稳定, 那么消融实验怎么做呢?
同样的setting下,最终的结果是非常接近的,不会有多大的误差。
orz !!
你可以看看这篇论文 ,他探讨了神经网络训练过程中重复运行间差异的问题。
大佬,你可真是我的导师,你的解答对我的帮助非常大,感谢!!!
不好意思,再次打扰一下您。因为我自己找了好久确实找不到原因,想再请教一下您。就是之前您教我显示特征图那一段代码。我尝试了您的SAFMN,以及别的RFDN、FMEN等网络都能正常显示图特征图像。但是也有另外一些网络比如BSRN、RLFN这些网络,我用同样的方式和代码(全都加载了预训练模型),显示的特征图却是马赛克,但这些网络的PSNR和SSIM都是比较高的。难道代码是要根据什么进行修改才能适应吗? if name== 'main': image_path = './img_003_SRF_4_LR.png' source_image = io.imread(image_path) source_image = np.expand_dims(source_image.transpose((2, 0, 1)), 0) input = torch.Tensor(source_image)
model = RLFN()
model_path = './rlfn.pth'
model.load_state_dict(torch.load(model_path)['params'], strict=True)
with torch.no_grad():
feat = model(input)
feat = feat.squeeze().cpu().numpy()
feat = np.mean(feat, axis=0)
plt.figure()
plt.imshow(feat)
plt.savefig('./RLFN.png')
不好意思,再次打扰一下您。因为我自己找了好久确实找不到原因,想再请教一下您。就是之前您教我显示特征图那一段代码。我尝试了您的SAFMN,以及别的RFDN、FMEN等网络都能正常显示图特征图像。但是也有另外一些网络比如BSRN、RLFN这些网络,我用同样的方式和代码(全都加载了预训练模型),显示的特征图却是马赛克,但这些网络的PSNR和SSIM都是比较高的。难道代码是要根据什么进行修改才能适应吗? if name== 'main': image_path = './img_003_SRF_4_LR.png' source_image = io.imread(image_path) source_image = np.expand_dims(source_image.transpose((2, 0, 1)), 0) input = torch.Tensor(source_image)
model = RLFN() model_path = './rlfn.pth' model.load_state_dict(torch.load(model_path)['params'], strict=True) with torch.no_grad(): feat = model(input) feat = feat.squeeze().cpu().numpy() feat = np.mean(feat, axis=0) plt.figure() plt.imshow(feat) plt.savefig('./RLFN.png')
你看看这些模型的输入数据范围是不是[0,1],这种可视化方式跟模型无关的。
不好意思,再次打扰一下您。因为我自己找了好久确实找不到原因,想再请教一下您。就是之前您教我显示特征图那一段代码。我尝试了您的SAFMN,以及别的RFDN、FMEN等网络都能正常显示图特征图像。但是也有另外一些网络比如BSRN、RLFN这些网络,我用同样的方式和代码(全都加载了预训练模型),显示的特征图却是马赛克,但这些网络的PSNR和SSIM都是比较高的。难道代码是要根据什么进行修改才能适应吗? if name== 'main': image_path = './img_003_SRF_4_LR.png' source_image = io.imread(image_path) source_image = np.expand_dims(source_image.transpose((2, 0, 1)), 0) input = torch.Tensor(source_image)
model = RLFN() model_path = './rlfn.pth' model.load_state_dict(torch.load(model_path)['params'], strict=True) with torch.no_grad(): feat = model(input) feat = feat.squeeze().cpu().numpy() feat = np.mean(feat, axis=0) plt.figure() plt.imshow(feat) plt.savefig('./RLFN.png')
有的模型训练是在0-255下训练的,你输入的时候也要保持一致。
噢,好的好的,我明白您的意思了。谢谢!
你有加载预训练模型吗?
确实忽略了这个。感谢大佬帮助
您好佬,可以问问具体怎么操作的吗?我鼓捣半天也没弄出来