使用keras LSTM进行序列预测

时间:2018-01-18 09:52:00

标签: python keras lstm

我想使用LSTM进行序列预测。 我正在使用keras。

我想要预测一条线的标签,而不是预测句子中的下一个单词。 在数据集中,我有一组与该行相关的特征和标签以及一组具有一组行的文档。

实施例。 文件:200 每个文档中的行(可用但最大行数我在末尾填充零以匹配长度):400 与每行相关的功能:100

所以我的输入功能大小是:200 * 400 * 100

现在每一行都有与之关联的标签,我想要预测。 label = 3

的可能值

所以我的标签尺寸:200 * 400 * 3

我正在使用以下代码来建模LSTM。

model = Sequential()
model.add(LSTM(50, input_shape=(400, 100)))
model.add(Dense(3))
model.add(Activation('softmax'))
optimizer = RMSprop(lr=0.01)
model.compile(loss='categorical_crossentropy', optimizer=optimizer)

我收到一些尺寸错误,上面写着:

检查模型目标时出错:预期activation_3有2个维度,但得到的形状为数组(200L,400L,3L)

1 个答案:

答案 0 :(得分:2)

如果您想预测每行的标签而不是所有行的标签,则需要将return_sequences=True传递到LSTM图层。然后,您需要使用TimeDistributed包装器包装以下非重复层,以便它们可以正确处理返回的序列数据:

model = Sequential()
model.add(LSTM(50, input_shape=(400, 100), return_sequences=True))
model.add(TimeDistributed(Dense(3)))
model.add(TimeDistributed(Activation('softmax')))