首页 > 解决方案 > MLP 总是返回相同的预测结果

问题描述

我正在使用 pytorch 来实现一个简单的多层感知器。我拥有的输入数据是 450 维,输出是 120。我已经对输入数据进行了标准化。我使用 MSE 作为我的损失函数并且训练收敛。

当我测试模型时,我发现无论输入是什么,输出几乎总是保持不变(对于所有 120 个维度)。我尝试让模型更简单(2 个隐藏层)或更复杂(最多 7 个隐藏层),但这仍然发生。

这是我构建模型的方式:

class MLP(torch.nn.Module):
def __init__(self, D_in, D_out):
    super(MLP, self).__init__()
    self.linear_1 = torch.nn.Linear(D_in, 1000)
    self.linear_2 = torch.nn.Linear(1000, 1500)
    self.linear_3 = torch.nn.Linear(1500, 1000)
    self.linear_4 = torch.nn.Linear(1000, 750)
    self.linear_5 = torch.nn.Linear(750, 500)
    self.linear_6 = torch.nn.Linear(500, 250)
    self.linear_7 = torch.nn.Linear(250, D_out)
    self.sigmoid = torch.nn.Sigmoid()

def forward(self, x):
         
    x = self.sigmoid(self.linear_1(x))
    x = self.sigmoid(self.linear_2(x))
    x = self.sigmoid(self.linear_3(x))
    x = self.sigmoid(self.linear_4(x))
    x = self.sigmoid(self.linear_5(x))
    x = self.sigmoid(self.linear_6(x))
    y_pred = self.linear_7(x)
 
    return y_pred

任何人都可以对此提供任何见解吗?提前致谢!

标签: pytorchregressionmlp

解决方案


推荐阅读