Pytorch与多项式回归的自定义损失优化

2024-04-23 23:02:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个我试图训练回归模型的数据集。数据集中的值模式或多或少都是相同的,可以从下图进行描述:

样本1 enter image description here

样本2 enter image description here

左边是空间中的原始值,右边是我排序后的原始值(遵循多项式模式)。现在观察原始值图的人会认为上面的稀疏点是离群点,但是对于我想要应用的研究来说,这并不是非常重要的。因此,它们应该被考虑在内。对于回归值,我主要尝试了4种不同的损失函数,即MAE、MSE、RMSE和一个自定义函数,该函数是低误差值和高误差值上MAE和MSE的组合:

class CustomLoss(torch.nn.Module):
    def __init__(self):
        super(CustomLoss, self).__init__()

    def forward(self, predicted, true):
        errors = torch.abs(predicted - true)
        mask = errors > 250
        return torch.mean((0.5 * mask * (errors ** 2)) + ~mask * errors)

每种方法的输出如下所示:

enter image description here

微卫星 enter image description here

RMSE enter image description here

MAE+MSE enter image description here

但是,正如您所看到的,所有的测试都无法处理高频值。对于示例2,我也得到了类似的输出。因此,我想问,是否有一种方法可以通过自定义损失或其他方式来解决此类价值

提前谢谢


Tags: 数据函数selfinitdef模式masktorch