使用以下代码:
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,但不知道如何在我的代码中使用它。
我想要可视化注意力机制,看看模型关注的是什么功能。
任何帮助都将不胜感激,尤其是代码修改。谢谢:)
发布于 2018-11-05 17:30:16
您可以在以下要点中找到如何在Keras中使用带有激活机制的LSTM的示例
https://gist.github.com/mbollmann/ccc735366221e4dba9f89d2aab86da1e
并在以下关于SO的回答中:
How to add an attention mechanism in keras?
要可视化您的激活,您可以使用以下存储库https://github.com/philipperemy/keras-activations
发布于 2020-11-19 16:22:58
至少有六种主要的注意力,其中大多数是2014年问世的第一个注意力模型的细微变化--巴达诺等人。每一种风格都可以以多种方式实现,所以对于那些想要在她/他的模型中添加一个简单的关注层的人来说,这可能会让人感到困惑。看看你的模型,我建议在你的第二个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
https://stackoverflow.com/questions/53151209
复制相似问题