我在做一个使用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这样的东西来代替损失,从而减少训练时间,并且主要是“帮助”我们的模型,因为词汇量很大,并且嵌入对网络的末端也有用?
谢谢!