使用pytorch计算均方对数误差

noo*_*oob 0 pytorch

你好,我是新手PyTorch,我想在我的神经网络中使用均方对数误差作为损失函数来训练我的 DQN 代理,但我找不到 MSLE,最好的实现方式是什么nn.functionalPyTorch

noo*_*oob 5

做起来并不难,MSLE 方程如下图所示在此输入图像描述

现在,正如 PyTorch表单上的一些用户建议的那样

你可以像这样添加为一个类

class RMSLELoss(nn.Module):
    def __init__(self):
        super().__init__()
        self.mse = nn.MSELoss()
        
    def forward(self, pred, actual):
        return torch.sqrt(self.mse(torch.log(pred + 1), torch.log(actual + 1)))
Run Code Online (Sandbox Code Playgroud)

然后就可以正常调用了

criterion = RMSLELoss()

rmsle = criterion(pred, actual)
Run Code Online (Sandbox Code Playgroud)