我在做一個使用keras的語言模型。Keras使用嵌入的LSTM語言模型
基本上,我的詞彙量N是〜30.000,我已經在它上面訓練了一個word2vec,所以我使用了嵌入,然後是LSTM,然後我用完全連接的層和softmax來預測下一個單詞。 我的模型寫成如下:
EMBEDDING_DIM = 256
embedding_layer = Embedding(N,EMBEDDING_DIM,weights=[embeddings],
trainable=False)
model = Sequential()
model.add(embedding_layer)
model.add(LSTM(EMBEDDING_DIM))
model.add(Dense(N))
model.add(Activation('softmax'))
model.compile(loss="categorical_crossentropy", optimizer="rmsprop")
我有兩個問題:
在這種情況下,可以確認,我們只用LSTM的最後一個隱藏層(隨後是完全連接層和softmax),並且沒有像lstm的連續隱藏層的最大值/平均值池(像這裏用於情感分析http://deeplearning.net/tutorial/lstm.html)?
您認爲,不是將lstm的最後一個隱藏層連接到一個大的N連接的大層(30.000),而是連接到一個大小爲EMBEDDING_DIM的層,並且預測下一個單詞的嵌入在這種情況下,我們用像mse這樣的東西來代替損失,從而減少訓練時間,並且主要是「幫助」我們的模型,因爲詞彙量很大,並且嵌入對網絡的末端也有用?
謝謝!