keras中的多对一实现

时间:2017-04-07 17:50:14

标签: keras lstm recurrent-neural-network

我正在尝试实现多对一模型,其中输入是大小为 d 的单词向量。我需要在LSTM的末尾输出大小 d 的矢量。

enter image description here

在这个question中,提到使用(对于多对一模型)

model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim)))

我仍然怀疑如何在keras模型中指定输入和更重要的输出维度

2 个答案:

答案 0 :(得分:1)

您提供的代码实际上是针对one-to-many方案的 - 但是对于大小为1的输出。如果您希望输出大小为d,则需要尝试以下代码:

model = Sequential()
model.add(LSTM(d, input_shape=(len_seq, d)))

此外 - 使用单词向量,我强烈建议您使用专为您的用例设计的Embedding图层。然后将其用作LSTM的输入。

答案 1 :(得分:0)

输入是3D张量的形状(batch_size,timesteps,input_dims)

所以它看起来像这样:

batch_input = np.empty([batch_size] + [timesteps] + [d])

将有一个输出(最后一个序列),因为' return_state = False'在keras默认情况下。

输出形状为:

(batch_size, 1)

因为您的LSTM中只有一个单位。如果你想要输出' d'尺寸,然后您必须将LSTM更改为

LSTM(d, input_shape=(timesteps, data_dim))