2016-10-08 104 views
-1

我对LSTM模型中的输入矢量感到困惑,我使用的数据是文本数据,例如, 1,000句话。我有两个有关LSTM输入层的问题:Keras中的LSTM输入

1.如果我将这些句子标记为矢量(我们可以称之为句子矢量),那么Keras中有没有一种方法可以让句子矢量给出文档?应该是单词级别,对不对?

2.第二个问题是LSTM中的3D张量类型。我有1000个句子(样本),如果我想要LSTM在每个时间步读取一个文档,time_step将是1,这是正确的吗?最后一个是输入维度,这个输入维度是每个句子中的单词维度(100)或每个时间步骤(10)中观察到多少个单词?

因此LSTM张量应该是(1000,1,10)或(1000,1,100)

回答

0

输入格式(nb_samples,time_steps,input_dim)。在你的情况下,样本的数量是句子的数量。时间步骤是句子中单词的数量,因此这将是句子中具有最大单词的单词数量(其他句子必须填充以匹配此长度)。 input_dimension是用于表示每个单词的特征的数量。例如,如果您使用word2vec嵌入,例如100或200维(特征),那将是您的input_dimension。

1

我不知道第一个问题的答案。我没有Keras的经验。不过,我有一些Tensorflow的工作经验。

对于第二个问题,你有没有意思“我想读LSTM一个一句在每个时间步”。如果你的意图是使用句子序列,我相信这是你在使用LSTM时想要做的,然后你需要定义序列长度(句子的数量将在一个特定的序列中被处理)。序列长度可以通过使用time_step来定义。所以设置time_step = 1会不正确。如果您正在处理句子向量,则最后一个是句子嵌入的向量维度。

例如,如果文档中有1000个句子,则每个句子由大小为100的矢量表示,并且序列长度为5(您想要在一个序列中处理最多5个句子),则张量尺寸将是(无,5,100)。第一个是'无',以便您可以决定稍后要输入网络的多少个序列(小批次学习)。