训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索

训练集在训练过程中,loss稳步下降,准确率上升,最后能达到97%

验证集准确率没有升高,一直维持在50%左右(二分类问题,随机概率)

测试集准确率57%

在网上搜索可能打的原因:

1.learning rate太小,陷入局部最优

2.训练集和测试集数据没有规律

3.数据噪声太大

4.数据量太小(总共1440个样本,80%为训练集)

5.训练集和测试集数据分布不同:如训练集正样本太少(训练集和测试集每次运行随机选择,故排除)

6.数据集存在问题,如标注有问题(采用公开数据集,排除)

7.学习率过大???

8.模型参数量过多而数据量过少

9.过拟合

10.输入到网络中的特征有问题,特征与label之间没有很明确的关联,或特征太少

11.数据没有归一化

自己猜测可能的问题:

1.正好选择了效果差的被试(脑电数据不同被试之间识别准确率有一定差距)

2.输入样本的特征向量维度太大,而数据量不够大

 

尝试1:增大学习率

原有学习率0.001调整为0.01

没有效果

尝试2:将特征向量进行更换

参考了一篇文献的方法,没有效果

尝试3:更换被试

没有效果

 

采用matplotlib绘制训练集和验证集的loss以及准确率(验证集没有拿来调参,与测试集等同)

训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索_第1张图片

求助师姐,是网络过拟合了,原因可能是没有加正则化

 

尝试4:加上l2,计算所有weight的l2的和,weight_decay设为0.01

训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索_第2张图片

发现loss震荡很厉害,查找原因,可能是学习率过大

尝试5:将学习率改为0.0001

训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索_第3张图片

发现loss先下降后上升,查找原因,是学习率过大

尝试6:每一次循环,将学习率乘以0.999

训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索_第4张图片

发现没有收敛

尝试7:learning_rate = 0.001(恒定),weight_decay=1e-5,加入bn层(每一层前面都有),bn层是小批量,所以加了batch,一批100个样本,将weight从64*32变回了64*64(之前改动忘记变回来)。bn层这里可能是起到了对数据归一化的作用。

print(t, loss.data, acc, val_loss, val_acc)

训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索_第5张图片

你可能感兴趣的:(训练集准确率97%(很高),测试集准确率50%~60%(很低),解决方案探索)