如何添加关注层二进制分类RNN

时间:2018-12-03 05:02:37

标签: python keras deep-learning lstm

我想在我的LSTM层之后引起注意。以下是代码。

visible = Input(shape=(251,))    
embed=Embedding(vocab_size, 50)(visible)
bilstm = Bidirectional(LSTM(units=25, return_sequences=True))(embed)    
att==??    
predictions=Dense(1, activation='sigmoid')(att)

在keras中是否有需要注意的层,例如lstm或gru等。

1 个答案:

答案 0 :(得分:1)

你可以使用这个。

bilstm = Bidirectional(LSTM(units=25, return_sequences=True))(embed) 
attention=TimeDistributed(Dense(1, activation = 'tanh'))(bilstm)
attention=L.Softmax(axis=1)(attention)
context=L.Multiply()([attention, bilstm])
cout=L.Lambda(lambda x: K.sum(x,axis=1))(context)

它允许您检索每一层。默认情况下,它将返回权重*序列作为双向 LSTM 的输出。如果要保留序列,可以避免使用 Lambda 层。

从 keras github 问题中找到了代码。我写的解决方案来自 keras devlopers 之一(我想?)。所以不幸的是,我不能给信用。