首页 文章

使用keras LSTM进行序列预测

提问于
浏览
1

我想使用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 回答

  • 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')))
    

相关问题