deep-learning - 深度学习模型测试精度不稳定
问题描述
我正在尝试训练和测试一个应该识别人的 pytorch GCN 模型。但是测试准确率非常不稳定,比如它在 23 个 epoch 时给出了 49%,然后在 41 个 epoch 时低于 45%。因此,尽管损失似乎在每个时期都在减少,但它并没有一直在增加。
我的问题不是关于实施错误,而是我想知道为什么会发生这种情况。我认为我的编码没有问题,因为我看到 SOTA 架构也有这种行为。作者刚刚选择了最好的结果并发表说他们的模型给出了这个结果。
准确度跳动(上下)是否正常,我是否只是采用有史以来最好的重量来产生这种情况?
解决方案
正如您所说,准确性自然会更加“跳跃”。就准确性而言,您对每个样本都有一个离散的结果——您要么正确,要么错误。这使得结果会波动,尤其是在样本数量相对较少的情况下(因为样本方差较高)。
另一方面,损失函数应该更平滑地变化。它基于在您的 softmax 层计算的每个类的概率,这意味着它们连续变化。在学习率足够小的情况下,损失函数应该单调变化。您看到的任何颠簸都是由于优化算法采取了离散步骤,假设损失函数在当前点附近大致呈线性。
推荐阅读
- python - 主成分分析 - 三个类别混合在三个单独的组中
- spring-boot - springboot和ionic如何通信?
- python - 为什么我在尝试运行 celery beat 时收到 KeyError: 'scheduler'?
- python - 使用 Python 可视化 Moiton Capture 数据
- c++ - 无法编译 opencv:未定义的参考 imread 等
- python - 如何在没有 tts 读取的情况下使用 discord.py 发送消息?
- java - 使用 IntentService 和 PendingIntent 接收后台位置更新
- redis - 将 redis-rs 与 actix-web 一起使用
- mysql - 遵循说明后未创建 mysql docker 容器
- reactjs - 在 SetState 中响应循环