【问题标题】:CNN model validation accuracy is not improvingCNN 模型验证准确率没有提高
【发布时间】:2019-12-09 11:21:00
【问题描述】:

我目前正在研究用于分类的 CNN 模型,我必须预测 wav 文件中的单词。我遇到了一个问题,我的验证准确性(几乎)保持不变,首先我在考虑过度拟合,但这似乎不是问题。您可以在下面看到不同时期的结果照片:

我正在使用 Keras 构建一个 CNN 模型,并使用“adam”优化器和“categorical_crossentropy”来计算损失。我已经尝试将 epoch 的数量增加到 1000 并更改了批量大小。

【问题讨论】:

  • 请从张量板上粘贴损失/验证图。
  • 您是否将拥有的数据拆分为训练/验证集,还是来自其他来源的验证数据?
  • 我们有一个训练集,我们分为训练集和验证集,我们有一个不同的测试集。训练集带有标签,而测试集没有标签,我们必须预测正确。使用如下代码:trainX, testX, trainY, testY = train_test_split(audio_features3,final_labels1, test_size=0.2, random_state=42) train = trainX.reshape(trainX.shape[0], 99, 13, 1)CNN=model.fit(train,trainY, batch_size=100, epochs=8) CNN=model.fit(train,trainY, validation_split = 0.1, batch_size=100, epochs=20)

标签: python keras


【解决方案1】:

您的训练损失似乎正在减少,但 val_loss 正在增加,而 val_accuracy 大致相同。这是过拟合的标准情况。为什么你认为情况并非如此?


增加训练周期或批量大小并没有帮助,因为您只是在更改模型看到数据的次数或它在一个周期中看到的数据量。


对于当前场景,创建最佳模型直到 val_loss 和 train_loss 在达到饱和之前继续减少。 为了解决这个问题,您需要在训练数据中添加噪声,以便模型更好地泛化,更好地泛化示例,在训练数据量方面创建平衡的类别。


其次,您可以增加验证数据集以查看它是否仍然存在相同的问题。如果它在那里,那么模型肯定是过拟合的。还请更新有关您正在使用哪种验证集和技术的问题。如果可能,添加验证集和损失函数的代码 sn-p

【讨论】:

  • 谢谢大家!你让我相信这个模型是过拟合的。我已经发布了我的代码,是在我的训练数据中添加噪声的唯一选择还是有其他方法可以避免这个模型过度拟合?
  • 这些是避免过拟合的一些步骤: 1. 添加更多数据 2. 使用数据增强 3. 使用泛化良好的架构 4. 添加正则化(主要是 dropout,L1/L2 正则化也是可能的) 5. 降低架构复杂性。有关更多详细信息,如果您阅读有关此内容的详细文章或博客文章会很有帮助:towardsdatascience.com/…
猜你喜欢
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2022-01-12
  • 2018-09-18
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多