为什么有时候数据集没问题,把标签没问题,模型没问题,可就是训练出的模型效果国不好?

每日深度学习笔记2024.8.20

问题背景

今天,我在使用点云数据集(modelnet10_ply)训练一个图分类模型的时候遇上这么一个离谱的问题。我在训练过程中发现,模型的准确率一直都在0.11徘徊。可当我使用相似的modelnet10_h5数据采集时,准确率却会在一次次训练中得到优化。

问题分析

首先我检查了ply类型数据集的标签是否能够对应的上,后面发现没问题。后面我突然想到,ply数据集是经过我整理后的数据集,我将相同一类的数据放在一个文件夹,并且我编写的ply文件读取器,是按一个一个文件夹读取的。我就想会不会是训练的时候同一类别的数据集太集中,没有乱序导致的

解决方法

后面我用Dataloader的shuffle将数据集打乱
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
最后恢复了正常

why

为什么会这样呢?按照我的理解,由于我使用的数据集比较大,每个类的数据集个数也比较多,所以在训练过程中,假如训练同一片数据集都是同一类,由于类别相同的数据具有相似的结构够,所以很可能导致在经过一片相同类别的数据训练后。模型出现一种假饱和状态,也就是说参数饱和了对于这个类,这个过程参数甚至都不用怎么调整了。当这片数据训练完了,到下一类数据集,突然间模型不适应了,就会突然间准确率下降,模型会朝着如何将这类数据集分类得更好去优化,经过大量数据集训练后,慢慢就将前面分类上一个类别的能力给遗忘掉了,所以说模型一直实在这么一个遗忘,记忆,遗忘,记忆的过程,始终最多只能分类一个类。这里为什么我的准确率保持一个0.11也得到解释,因为经过一趟训练后,模型基本上只对最后一个类别具备较好的分类能力,所以说准确率一直都是最后一个类跟全部数据集之比。刚刚好我里面有十个类,占十分之一刚好得到验证。所以说大家在使用较大数据集训练模型的时候一定要,注意将数据集乱序,打乱了才能学到一个总体能力。还有看到准确率或者损失一直不变也可以想一下这个原因

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码飞速跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值