Python LSTM num_单位大小,即隐藏层的大小
我经常看到Python LSTM num_单位大小,即隐藏层的大小,python,keras,lstm,Python,Keras,Lstm,我经常看到natural language processing任务使用LSTM的方式是首先使用嵌入层,然后使用嵌入大小的LSTM层,即如果一个单词由一个1x300向量表示,则使用LSTM(300) 例如: 这样做有什么特别的原因吗?喜欢更好地表达意思吗?我不认为有任何特殊的原因/需要,坦率地说,我自己也没有见过很多这样的情况(即使用LSTM隐藏单元==嵌入大小)。唯一的效果是每个嵌入向量元素有一个单独的存储单元(我认为这不是一个要求或必要) 话虽如此,我想我可以多提一点。也就是说,在这个设置中
natural language processing
任务使用LSTM
的方式是首先使用嵌入层
,然后使用嵌入大小的LSTM层
,即如果一个单词由一个1x300向量表示,则使用LSTM(300)
例如:
这样做有什么特别的原因吗?喜欢更好地表达意思吗?我不认为有任何特殊的原因/需要,坦率地说,我自己也没有见过很多这样的情况(即使用
LSTM
隐藏单元==嵌入大小)。唯一的效果是每个嵌入向量元素有一个单独的存储单元(我认为这不是一个要求或必要)
话虽如此,我想我可以多提一点。也就是说,在这个设置中有一个嵌入
层是有原因的。事实上,这是一个很好的理由。让我们考虑这两个选项,
使用一个热编码进行单词表示
使用嵌入
进行单词表示
方案2比方案1有几个优点
- 使用嵌入层时,输入的维度要小得多(例如,300而不是50000)
- 您为模型提供了灵活性,以学习实际上适合您解决的任务的单词表示法。换句话说,您没有限制单词的表示在训练过程中保持不变
- 如果使用预训练的单词嵌入层初始化
嵌入层
更好。您正在将单词语义引入到您正在解决的任务中。这总是有助于更好地解决任务。这类似于让一个不理解单词含义的幼儿做一些与文本相关的事情(例如,按照正确的语法顺序排列单词),而不是让一个3岁的孩子做同样的任务。他们俩最终可能都会这么做。但是一个人会做得更快更好
有趣的问题。。。。从技术上讲,我们可以选择任何数字,但如果平等可以带来更好的学习,那么研究就可以了。。。。
model = Sequential()
model.add(Embedding(vocabulary, hidden_size, input_length=num_steps))
model.add(LSTM(hidden_size, return_sequences=True))