【问题标题】:Validation accuracy much lower than training accuracy in Keras for text classification验证准确度远低于 Keras 中文本分类的训练准确度
【发布时间】:2018-08-16 23:17:01
【问题描述】:

我是 Keras 的新手,正在尝试创建模型。问题是我的训练准确率大约是 80%,但验证准确率非常低,只有 15%。我的数据集中有 545 行。我已经标准化了所有的输入特征。任何关于可以调整的帮助都会非常有帮助。

在这里分享完整的数据和代码

https://drive.google.com/open?id=1g8Cmw2bmAI9DnOU-rB4sjsOeBuFp6NUy

   #Normalize data

data[,1:(ncol(data)-1)] = normalize(data[,1:(ncol(data)-1)])

data[,ncol(data)] = as.numeric(data[,ncol(data)]) - 1

set.seed(128)

ind = sample(2,nrow(data),replace = T,prob = c(0.7,0.3))

training = data[ind==1,1:(ncol(data)-1)]

test = data[ind==2,1:(ncol(data)-1)]

traintarget = data[ind==1,ncol(data)]

testtarget = data[ind==2,ncol(data)]
# One hot encoding
trainLabels = to_categorical(traintarget)
testLabels = to_categorical(testtarget)
print(testLabels)

model = keras_model_sequential()

model %>% 
  layer_dense(units = 150, activation = 'relu', input_shape = c(520)) %>% 
  layer_dense(units = 50, activation = 'relu') %>%
  layer_dense(units = 9, activation = 'softmax') 


model %>%
  compile(loss = 'categorical_crossentropy', optimizer = 'adam',metrics = 'accuracy')


history = model %>%
  fit(training,
      trainLabels,
      epoch = 300,
      batch_size = 32,
      validation_split = 0.2)

prob = model %>%
  predict_proba(test)

pred = model %>%
  predict_classes(test)

table2 = table(Predicted = pred, Actual = testtarget)

cbind(prob,pred,testtarget)

【问题讨论】:

  • 这似乎不是一个适合 Stack Overflow 的特定编程问题。如果您需要一般的模型拟合建议,那么您可能应该通过Data ScienceCross Validated 询问。
  • @MrFlick - 感谢您的建议。我会在您建议的论坛中发布问题

标签: r neural-network keras text-classification


【解决方案1】:

简单地说,当您的模型成功训练但未通过验证时,它过拟合。解决此问题的最佳方法是 a) 确保您的输入实际预测输出,否则足够大模型只会记住历史数据。 b) 通过在网络中添加 dropout 层。最后,500 个训练样本对于训练神经网络来说似乎有点少。

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 2017-12-21
    • 2021-10-13
    • 2020-10-16
    • 2019-02-14
    • 2023-03-17
    • 2020-07-08
    • 2017-10-14
    • 2018-09-18
    相关资源
    最近更新 更多