簡體   English   中英

使用 LSTM 和 Glove、Keras 和 Tensorflow 改進多類文本分類 model

[英]Improve multiclass text classification model with LSTM and Glove, Keras and Tensorflow

我花了一些時間嘗試提高我的多類文本分類任務的 F1 分數。 我從筆記本電腦評論中提取方面和情緒。 因此有 3 個標簽,B_A / I_A / O 等。我非常感謝任何改進我的網絡的建議,例如附加層或另一個嵌入。 (也許我還應該為我的任務嘗試除多類分類之外的其他方法)現在我的 F1 分數約為 60%,以下代碼:

#vocab_size=4840, embedding is glove6B, max_seq_length=100

model =  Sequential()
model.add(Embedding(vocab_size, 300, weights=[embedding_vectors], input_length=max_seq_length, 
trainable= False))
model.add(Dropout(0.1))
model.add(Conv1D(3000, 1, activation='relu'))
model.add(Bidirectional(LSTM(units=150, recurrent_dropout=0, return_sequences=True)))
model.add(Dense(32, activation='relu'))
model.add(Dense(n_tags, activation='softmax'))


model.compile(loss="categorical_crossentropy", optimizer="rmsprop", metrics=["categorical_accuracy"])
model.summary()

# fit model on train data
model.fit(x_train, y_train,
      batch_size=64,
      epochs=10)

我不知道數據,但我確實對 keras 的多文本分類有很多建議:

  1. 與其添加 1 3000 Conv1D 層,不如嘗試添加多個過濾量較小的 Conv1D 層
  2. 對於 32 個神經元的密集層,嘗試增加神經元的數量。 通常,當 output 層之前的層中沒有足夠的神經元時,model 會失去准確性
  3. 不要在層中添加activation='relu',而是嘗試添加一個LeakyReLU,這樣如果它存在的話,它將解決垂死的ReLU問題
  4. 不要在 Embedding 層之后添加 Dropout,而是在 Conv1D 層之后添加 Dropout。 在僅用於矢量化輸入的不可訓練層之后,我不會看到需要 Dropout

如果您還沒有嘗試過我的任何建議,我建議您嘗試一下。 我特別會嘗試第四個,因為嵌入層之后的 Dropout 似乎沒有必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM