我正在训练一些文字数据的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'])
任何帮助将不胜感激。
答案 0 :(得分:1)
您的模型过度拟合,因此最佳做法是:
代替
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