验证数据的性能比训练中的数据差

时间:2019-12-26 14:59:15

标签: python machine-learning deep-learning neural-network

我正在训练一些文字数据的CNN。句子被填充并嵌入并馈送到CNN。模型架构为:

model = Sequential()
model.add(Embedding(max_features, embedding_dims, input_length=maxlen))
model.add(Conv1D(128, 5, activation='relu'))
model.add(GlobalMaxPooling1D())

model.add(Dense(50, activation = 'relu'))
model.add(BatchNormalization())

model.add(Dense(50, activation = 'relu'))
model.add(BatchNormalization())

model.add(Dense(25, activation = 'relu'))
#model.add(Dropout(0.2))
model.add(BatchNormalization())

model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

enter image description here

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您的模型过度拟合,因此最佳做法是:

  • 添加层,最好是2的幂

代替

  model.add(Dense(50, activation = 'relu'))

使用

  model.add(Dense(64, activation = 'relu'))

并选择512 128 64 32 16

  • 最好在两层之后添加一些辍学层。
  • 训练更大的数据。

答案 1 :(得分:0)

您可以尝试删除BatchNormalization并添加更多的卷积和池化层,以提高准确性。

您也可以查看以下内容: https://forums.fast.ai/t/batch-normalization-with-a-large-batch-size-breaks-validation-accuracy/7940