Keras - 向 LSTM 模型添加注意机制 [重复]
Posted
技术标签:
【中文标题】Keras - 向 LSTM 模型添加注意机制 [重复]【英文标题】:Keras - Add attention mechanism to an LSTM model [duplicate] 【发布时间】:2019-04-08 14:59:34 【问题描述】:使用以下代码:
model = Sequential()
num_features = data.shape[2]
num_samples = data.shape[1]
model.add(
LSTM(16, batch_input_shape=(None, num_samples, num_features), return_sequences=True, activation='tanh'))
model.add(PReLU())
model.add(Dropout(0.5))
model.add(LSTM(8, return_sequences=True, activation='tanh'))
model.add(Dropout(0.1))
model.add(PReLU())
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
我试图了解如何在第一个 LSTM 层之前添加注意机制。我找到了以下 GitHub:keras-attention-mechanism by Philippe Rémy,但无法弄清楚如何将它与我的代码一起使用。
我想可视化注意力机制,看看模型关注的特征是什么。
任何帮助将不胜感激,尤其是代码修改。谢谢:)
【问题讨论】:
这里添加关注的简单方法:***.com/questions/62948332/… 【参考方案1】:您可以在此 gist 中找到有关如何在 Keras 中使用具有激活机制的 LSTM 的示例
https://gist.github.com/mbollmann/ccc735366221e4dba9f89d2aab86da1e
在以下关于 SO 的回答中:
How to add an attention mechanism in keras?
要可视化您的激活,您可以使用以下存储库https://github.com/philipperemy/keras-activations
【讨论】:
感谢您的回复,您将如何可视化在我共享的 GitHub 存储库上看到的输出? 感谢您的帮助,但是,我正在为我的用例寻找更多观点 :)【参考方案2】:至少有六种主要的注意力类型,其中大多数是 2014 年出现的第一个注意力模型(Bahdanau 等人)的微小变化。每种类型都可以通过多种方式实现,所以这可以让想要在她/他的模型中添加简单注意力层的人感到困惑。查看您的模型,我建议在您的第二个 LSTM 层之后添加一个注意力层。这可以是基于 Bahdanau 的自定义注意力层。
这里分享了一个实现: Create an LSTM layer with Attention in Keras for multi-label text classification neural network
然后您可以使用该层返回的“上下文”来(更好地)预测您想要预测的任何内容。所以基本上你的后续层(密集 sigmoid 层)会使用这个上下文来更准确地预测。
注意力权重也由上面的层返回。这些可以路由到一个简单的显示器。
更多具体细节请参考https://towardsdatascience.com/create-your-own-custom-attention-layer-understand-all-flavours-2201b5e8be9e
【讨论】:
以上是关于Keras - 向 LSTM 模型添加注意机制 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python深度学习12——Keras实现注意力机制(self-attention)中文的文本情感分类(详细注释)