flo*_*989 5 neural-network lstm keras
我正在使用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之类的东西代替损失,减少训练时间,主要是"帮助"我们的模型,因为词汇量很大,嵌入也可以用于网络的末端?
谢谢 !
我只能肯定地回答第一个问题:
是的,LSTM层的输出是最后一个隐藏单元。如果您给它参数 ,它只会返回所有隐藏状态return_sequences=True
。默认设置为 False。
对于第二个问题,我只能说我已经尝试预测单词的 one-hot 向量表示的嵌入,但它给了我不好的结果。单词仍然是分类变量,即使我们可以通过连续表示来近似它们。为此人们投入了大量的精力来开发Hierachical Softmax。
归档时间: |
|
查看次数: |
963 次 |
最近记录: |