我正在使用keras做一个语言模型.
基本上,我的词汇量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")
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
在这种情况下,你能否确认我们只使用LSTM的最后一个隐藏层(后面是完全连接的层和softmax),并且没有类似于lstm的连续隐藏层的max/mean-pooling (像这里的情感分析http://deeplearning.net/tutorial/lstm.html)?
您如何看待,而不是将lstm的最后一个隐藏层连接到一个大小为N(30.000)的大型完全连接层,连接到一个大小为EMBEDDING_DIM的层,并预测嵌入下一个单词而不是单词本身,在这种情况下,我们用mse之类的东西代替损失,减少训练时间,主要是"帮助"我们的模型,因为词汇量很大,嵌入也可以用于网络的末端?
谢谢 !