2017-04-14 179 views
2

我正在嘗試使用keras來做實體關係抽取任務。如何使用keras獲得lstm圖層中特定時間步的輸出?

我的模型看起來像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層獲得「攝影師」和「坦克」的輸出,並將它們發送到MLP。那麼我應該怎麼做才能在biLSTM層獲得「攝影師」和「坦克」的輸出?我嘗試過圖層的輸出屬性,但它似乎不可行。

這可能聽起來很混亂。簡而言之,如何獲得lstm層中特定時間步的輸出?

任何建議將不勝感激。非常感謝你!

回答

0

return_sequences = True參數可以獲得所有時間步的輸出。然後你需要編寫一個自定義圖層來提取你需要的某些步驟的輸出。 AFAIK從keras沒有直接的途徑來實現這一目標。儘管編寫這樣一個自定義圖層應該不會太難。