NAFNet
NAFNet copied to clipboard
关于loss疑问
疑问1: 在代码image_restoration_model.py 225行l_total = l_total + 0. * sum(p.sum() for p in self.net_g.parameters()) . 0乘以任何数都=0,这是啥操作? 疑问2: 关于PSNRLoss:self.scale * torch.log(((pred - target) ** 2).mean(dim=(1, 2, 3)) + 1e-8).mean(). 即 10/ln(10) * ln(MSE) 这里MaxValue是=1的吧?. PSNR公司 MSE是在分母位置, 这里为什么在分子位置. 如果在分子位置,那么这个损失是负值啊. 怎么梯度更新呢?
yangjian1218, 您好, 感谢您对NAFNet的关注。
关于疑问1. 只是因为有时模型定义的参数并没有真正参与到计算(所以会没有梯度),训练时可能会报错。 为了绕过这个问题我们加了这一句, 使得每个参数都会有梯度绕过这个问题, 可以忽略。
关于疑问2. loss 为负数并不会影响梯度 / 参数的更新。
yangjian1218, 您好, 感谢您对NAFNet的关注。
关于疑问1. 只是因为有时模型定义的参数并没有真正参与到计算(所以会没有梯度),训练时可能会报错。 为了绕过这个问题我们加了这一句, 使得每个参数都会有梯度绕过这个问题, 可以忽略。
关于疑问2. loss 为负数并不会影响梯度 / 参数的更新。
关于第二个问题, 我有了进一步的理解,就是把PSNR进行展开后为一个常数被减数-减数, 其中减数部分作为损失函数. PSNR要越来越大好,减数就要越来越小好, 是否可以这么理解?

yangjian1218, 您好, 感谢您对NAFNet的关注。 关于疑问1. 只是因为有时模型定义的参数并没有真正参与到计算(所以会没有梯度),训练时可能会报错。 为了绕过这个问题我们加了这一句, 使得每个参数都会有梯度绕过这个问题, 可以忽略。 关于疑问2. loss 为负数并不会影响梯度 / 参数的更新。
关于第二个问题, 我有了进一步的理解,就是把PSNR进行展开后为一个常数被减数-减数, 其中减数部分作为损失函数. PSNR要越来越大好,减数就要越来越小好, 是否可以这么理解?
yangjian1218, 您好,
我认为这样的理解没有问题。