我想在我的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等。
答案 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 之一(我想?)。所以不幸的是,我不能给信用。