改进Keras模型进行文本分类

时间:2020-04-06 13:21:28

标签: python lstm text-classification

我正在将网页标题分类为食品的101个类别之一的模型(大多数标题涉及食谱)。我的序列的中等长度为42。我清除了文本(错误的单词,更改为小写字母等)并使用Tokenizer对其进行了标记化。我在模型中放置了一个 LSTM 层,测试集的准确度达到了83%。我很确定可以通过对网络进行一些更改来改善这一点,您有什么建议吗?先感谢您!那是我的模型:

model = Sequential()
model.add(Embedding(MAX_NB_WORDS, EMBEDDING_DIM, input_length=x_train.shape[1]))
model.add(SpatialDropout1D(0.2))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(101, activation='softmax'))

opt = optimizers.Adam(learning_rate=0.01, beta_1=0.9, beta_2=0.999, amsgrad=False)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

1 个答案:

答案 0 :(得分:1)

您可以尝试做的一件事是添加另一个LSTM层,但是请注意单位数量:过多增加单位很容易导致过度拟合。否则,在达到平稳状态时逐渐降低学习速度也可能有助于提高学习速度。

如果要添加另一个,请不要忘记在第一LSTM层中添加“ true”。

您还应该为度量标准保留一个验证集(测试集除外)。