我正在尝试实现多对一模型,其中输入是大小为 d 的单词向量。我需要在LSTM的末尾输出大小 d 的矢量。
在这个question中,提到使用(对于多对一模型)
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim)))
我仍然怀疑如何在keras模型中指定输入和更重要的输出维度
答案 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))