多分类LSTM训练集和测试集准确率差别很大

训练概况:
1、对时序数据进行7分类,样本shape为 60 * 14 ,mini_batch是128
2、训练时模型收敛到准确率97%左右,在验证集上测试时发现大概在50轮左右开始过拟合,最终最佳模型的效果定格在83%左右。
3、测试时使用全新数据进行测试,但是在实际测时发现最高准确率只有40%,随着epoch的增加,产出的模型准确率还在降低。
解决问题进行的尝试:
1、在网络结构中,我使用了BN层和dropout,查资料看到可能是.train()和.eval()引发的错误,但是我这里是弄好了的,我还看到有人说测试时不能将BN冻结,尝试之后发现没有效果。
2、为了避免BN和dropout因为其他原因影响准确率,我将他们删去,发现依旧没有效果。
3、怀疑是shuffle导致的问题,在我将shuffle设置为false时,问题未解决
4、此时我开始审视我的数据是否有问题,我使用从训练集中截取的一段数据进行测试,发现训练集中经归一化后的结果和测试时归一化后的结果不一致。因此发觉是归一化时的问题。
解决办法:
我使用的是最大最小值归一化,将训练集上的归一化参数dump下来保存,测试集再重新load回来,不一致的原因在于我在训练时使用的是.fit_transform(),测试时也是用的这个。也就是说我保存的参数其实没有作用到测试数据上,应该使用.transform()来对测试数据归一化。
修改后,测试集准确率回归正常。

你可能感兴趣的:(机器学习,分类,lstm,深度学习,归一化)