PyTorch NN 不学习或学习效果不佳

时间:2021-06-04 16:34:17

标签: python machine-learning neural-network pytorch

我正在使用 PyTorch 教程,稍作修改以使用泰坦尼克号数据集。我正在使用带有 ReLU 的非常简单的线性(密集)网络......我想根据年龄、票价和性别来预测生存状态。

我在使用简单的神经网络时遇到了一种奇怪的行为(我正在 Google Colab 上进行试验)。有时当我执行训练时,准确度根本没有改变。这很奇怪,因为我正在重新创建模型...

Accuracy: 59.4%, Avg loss: 0.693147
[...50 or more lines like this...]
Accuracy: 59.4%, Avg loss: 0.693147

有时准确率会从 60% 缓慢增加到 80%。

另一件事是,准确率非常低(从 60% 到 80% 不等),尽管事实上我正在使用...完全相同的训练集进行验证!

我已经尝试了几种不同的学习率、批次大小和时期计数以及神经元数量的组合,但它的表现仍然非常......不可预测且微弱。 你能指出为什么有时网络根本不学习吗?如果我重新运行它几次,它就会开始以某种方式学习。应该对这个网络做些什么来改进它?

这是我的 Python 笔记本: https://colab.research.google.com/drive/1-50BTqnMgiz_dozv1DjXS9advD1Rxd-B?usp=sharing

提前致谢!

1 个答案:

答案 0 :(得分:0)

由于这是一个分类问题,因此您的神经网络的最后一层不应具有 relu 激活函数。

代码片段:

class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.fun = nn.Sequential(
            nn.Linear(3, 32),
            nn.ReLU(),
            nn.Linear(32, 1)
        )

    def forward(self, x):
        return self.fun(x)