pytorch - 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
任何人都可以对此提供任何见解吗?提前致谢!
解决方案
推荐阅读
- laravel - Laravel-通过 FTP 部署项目
- spring - 如何通过客户查询获取状态?Corda 应用程序使用 Spring boot webserver- 获取结果时出错
- cuda - 并发 cudaMemcpyAsync 可能吗?
- python - 获取 SQL Server 存储过程输入参数的方法
- html - 在 Angular 4+ 中使 routerLink 成为有条件的 HTML
- ios - 我想在 iOS Swift 的常规高度特征环境中运行特定的视图控制器
- node.js - 如何使用 nodejs 将图像或视频上传到 cloudinary?
- sql - 使用 pl/sql 循环获取 ORA-00904 无效标识符
- c# - 方法必须有返回类型(Unity 3D)
- typescript - 如何使用 Azure 管道任务库发出 http 请求?