gpt4 book ai didi

python - PyTorch 中多输出回归问题的 RMSE 损失

转载 作者:行者123 更新时间:2023-12-03 23:47:09 37 4
gpt4 key购买 nike

我正在训练一个 CNN 架构来使用 PyTorch 解决回归问题,其中我的输出是一个 20 个值的张量。我计划使用 RMSE 作为模型的损失函数,并尝试使用 PyTorch 的 nn.MSELoss()并使用 torch.sqrt() 取平方根为此,但在获得结果后感到困惑。我会尽力解释原因。很明显,对于批量大小 bs我的输出张量的维度是 [bs , 20] .我尝试实现我自己的RMSE函数:

   def loss_function (predicted_x , target ):
loss = torch.sum(torch.square(predicted_x - target) , axis= 1)/(predicted_x.size()[1]) #Taking the mean of all the squares by dividing it with the number of outputs i.e 20 in my case
loss = torch.sqrt(loss)
loss = torch.sum(loss)/predicted_x.size()[0] #averaging out by batch-size
return loss

但是我的 loss_function() 的输出以及 PyTorch 如何使用 nn.MSELoss() 实现它不一样。我不确定我的实现是错误的还是我使用了 nn.MSELoss()以错误的方式。

最佳答案

MSE 损失是误差平方的平均值。您在计算 MSE 后取平方根,因此无法将损失函数的输出与 PyTorch 的输出进行比较 nn.MSELoss()函数——它们计算不同的值。

但是,您可以只使用 nn.MSELoss()创建您自己的 RMSE 损失函数:

loss_fn = nn.MSELoss()
RMSE_loss = torch.sqrt(loss_fn(prediction, target))
RMSE_loss.backward()

希望有帮助。

关于python - PyTorch 中多输出回归问题的 RMSE 损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61990363/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com