ShusenTang / Dive-into-DL-PyTorch

本项目将《动手学深度学习》(Dive into Deep Learning)原书中的MXNet实现改为PyTorch实现。
http://tangshusen.me/Dive-into-DL-PyTorch
Apache License 2.0
18.17k stars 5.38k forks source link

3.16中的rmse的损失计算 #97

Closed Sunstin closed 4 years ago

Sunstin commented 4 years ago

bug描述 rmse = torch.sqrt(2 * loss(clipped_preds.log(), labels.log()).mean()) 根据公式可以理解,loss()函数是计算MSE,求平均也好理解,为什么要乘以2,求解答,感谢~

版本信息 pytorch: torchvision: torchtext: ...

whhamber commented 4 years ago

MSE已经求过平均,返回的是一个数字,rmse再求平均,返回的也是该数字本身,为什么还要求mean? 乘以2是因为这样吧

ShusenTang commented 4 years ago

bug描述 rmse = torch.sqrt(2 * loss(clipped_preds.log(), labels.log()).mean()) 根据公式可以理解,loss()函数是计算MSE,求平均也好理解,为什么要乘以2,求解答,感谢~

版本信息 pytorch: torchvision: torchtext: ...

这里不应该乘以2. 原书乘以2是因为mxnet的L2loss除以了2所以要乘回来,但是PyTorch的MSELoss没除2所以不用乘了,已更正,感谢指正。

ShusenTang commented 4 years ago

MSE已经求过平均,返回的是一个数字,rmse再求平均,返回的也是该数字本身,为什么还要求mean? 乘以2是因为这样吧

感谢指正,已更正。

ghost commented 2 years ago

https://github.com/ShusenTang/Dive-into-DL-PyTorch/issues/97#issue-562136303