首页 > 解决方案 > 如何在lstm中设置输入层的长度

问题描述

我正在构建一个 LSTM 模型来使用 Keras 对一些评论数据进行分类。输出只是 1 或 0。

在将文本数据输入 lstm 层之前,我添加了一个词嵌入层。我的部分代码如下所示。这里的 max_feature 是词汇量。词向量大小为 2。每个文档的大小为 maxlen。所有文档都已填充到相同的长度。

但是,我总是对 LSTM 层的长度感到困惑。这应该与我的文档长度(maxlen)相同吗?输入每个文档中的所有单词,并得到一个输出?......

有很多在线资源解释了 LSTM。但在执行方面,我感觉没有多少人给出明确的解释……

如果有人能澄清这一点,真的很感激。

# max_features: vocabulary size
# word vector size: 2
# maxlen: my document size, already padded to the same length
# Build our model
print('Build model...')
model = Sequential()
model.add(Embedding(input_dim=max_features, output_dim= 2, input_length=maxlen ))
model.add(LSTM(units= ???? ))  
model.add(Dense(1))

model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',            
              optimizer='adam',
              metrics=['accuracy'])

标签: keraslstm

解决方案


LSTM 中的单元数与数据维度无关,单元数是 LSTM 层中神经元/节点的数量。LSTM 是一个递归网络,其参数在同一层反复使用: 图片取自 http://colah.github.io/posts/2015-08-Understanding-LSTMs/

'A' 代表 LSTM 单元,'A' 的数量与您的输入长度相同。单位代表“A”的隐藏维度。


推荐阅读