如何使用keras获取lstm层中特定时间步的输出?

时间:2017-04-14 08:30:25

标签: keras lstm

我试图用keras做实体关系提取任务。

我的模型看起来像keras的示例代码 imdb_bidirectional_lstm.py

model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(Bidirectional(LSTM(64)))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

然而,与imdb分类任务不同,关系与句子中的特定实体相关,并且在一个句子中可能存在多个关系。所以我想在BiLSTM层中得到特定实体字的输出一次,然后将它们连接起来。

例如,有一句话“在巴格达,摄影师死了 美国坦克向巴勒斯坦酒店开火。“这句话有几个关系。所以如果我想得到”摄影师“和”坦克“之间的关系,我需要在biLSTM层获得”摄影师“和”坦克“的输出那么我应该怎样做才能在biLSTM层中获得“cameraman”和“tank”的输出?我已经尝试了图层的输出属性,但似乎不可行。

听起来可能令人困惑。简而言之,如何获取lstm层中特定时间步的输出?

任何建议将不胜感激。非常感谢你!

1 个答案:

答案 0 :(得分:0)

return_sequences = True参数可以获得所有时间步的输出。然后,您需要编写自定义图层以提取所需的某些步骤的输出。 AFAIK没有直接的方法来实现这一目标。编写这样的自定义图层应该不会太难。