【问题标题】:Higher train set accuracy, Lower test set accuracy更高的训练集精度,更低的测试集精度
【发布时间】:2020-07-26 22:20:49
【问题描述】:

我正在使用 CNN 对无线信号进行分类。 同时我遇到了一些奇怪的问题 - 当 trainset 准确率为 80% 时,我得到了 79% 的 testset 准确率,但是当 trianset 准确率为 93% 时,testset 准确率下降到 71%。有人遇到过同样的问题吗?

我的网络基于keras + tensorflow。 网的细节是:

CNN(512,(2,2),tanh)   
Batch_normaliztion  
flatten()   
DNN(512,elu)   
DNN(256,elu)  
DNN(128,softmax)

opt=adam
loss = mse

谢谢

【问题讨论】:

  • 对于非常高的训练集精度,您的模型可能会过度拟合数据集(不确定,因为您没有提到您的数据集)。
  • 谢谢,数据集是我自己收集的,由一些无线信号组成,如 WIFI、zigbee、LoRa、RFID 等。你的意思是即使训练集准确率只有 90% 也可能发生过拟合?
  • 是的,这是因为你的测试准确率很低(尝试使用 dropout 层)。其他原因可能是在拆分过程中,您的测试数据集与训练数据集相比包含完全不同的值(例如,测试集包含来自训练集不包含的区域的 wifi 等信息,或任何类似问题)
  • 这可能是高方差问题(过拟合)的情况。您确定训练数据和测试数据来自同一来源吗? (例如位置)如果不是,则根据它们的来源平均分割它们。您还可以尝试添加一些正则化技术,例如 DropOut。
  • 谢谢,训练数据和测试数据来自同一来源。(在相同的位置和环境中)。我认为它过度拟合。我会增加 Dropout。

标签: tensorflow keras deep-learning


【解决方案1】:

这似乎是过度拟合的情况。您是如何将训练准确率从 80% 提高到 93% 的?仅仅是通过运行更多的时期吗? 如果发生过拟合,请向模型添加 dropout 层。这应该会提高验证的准确性,但可能需要更多的 epoch 才能达到所需的训练准确性。另一种选择是在密集层中使用正则化器。 您的模型越复杂,就越容易过度拟合,因此您可以尝试仅使用两个密集层来运行模型,或者减少隐藏层中的节点数量。

【讨论】:

  • 是的,我通过添加更多 epoch 来提高准确性。我遵循您的建议,它很有帮助。测试集的准确性更好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2020-07-08
  • 2016-10-01
  • 2021-09-14
  • 2013-01-21
  • 1970-01-01
  • 2018-12-30
相关资源
最近更新 更多