【发布时间】:2016-05-11 18:45:54
【问题描述】:
如何使用没有嵌入层的 LSTM 架构在 keras 中编写简单的序列复制任务?我已经有了词向量。
【问题讨论】:
-
你试过去掉嵌入层吗?
如何使用没有嵌入层的 LSTM 架构在 keras 中编写简单的序列复制任务?我已经有了词向量。
【问题讨论】:
如果你说你有词向量,我猜你有一个字典来将一个词映射到它的向量表示(从 word2vec、GloVe 计算...)。
使用这本词典,您可以将序列中的所有单词替换为其对应的向量。您还需要使所有序列的长度相同,因为 LSTM 需要所有输入序列具有恒定长度。因此,您需要确定一个 max_length 值并修剪所有较长的序列并用零填充所有较短的序列(请参阅 Keras pad_sequences 函数)。
然后,您可以将矢量化序列直接传递到神经网络的 LSTM 层。由于 LSTM 层是网络的第一层,因此您需要定义输入形状,在您的情况下为 (max_length, embedding_dim, )。
这样您可以跳过嵌入层并使用您自己的预计算词向量。
【讨论】:
weights 参数将预训练的嵌入加载到嵌入层中,请参阅this post。这样以后就不需要摆弄转换,并且可以将句子作为整数列表直接传递给模型。
在“用于序列分类的堆叠 LSTM”部分中搜索 Keras 后,我遇到了同样的问题,我发现以下代码可能有用:
model = Sequential()
model.add(LSTM(3NumberOfLSTM, return_sequences=True,
input_shape=(YourSequenceLenght, YourWord2VecLenght)))
【讨论】: