【发布时间】:2021-02-08 11:06:42
【问题描述】:
我是注意力机制的新手,我想通过做一些实际的例子来进一步了解它。我在这个网站Pypi keras multi-head 中发现了一个用于多头注意力的 Keras 实现。我在 Keras 中找到了两种不同的实现方式。
- 一种方法是使用多头注意力作为带有 LSTM 或 CNN 的 keras 包装层。 这是在 Keras 中使用 LSTM 实现多头作为包装层的 sn-p。本例取自本网站keras multi-head"
import keras
from keras_multi_head import MultiHead
model = keras.models.Sequential()
model.add(keras.layers.Embedding(input_dim=100, output_dim=20, name='Embedding'))
model.add(MultiHead(keras.layers.LSTM(units=64), layer_num=3, name='Multi-LSTMs'))
model.add(keras.layers.Flatten(name='Flatten'))
model.add(keras.layers.Dense(units=4, activation='softmax', name='Dense'))
model.build()
model.summary()
- 另一种方式是单独作为独立层使用。 这是多头作为独立层的第二个实现的sn-p,同样取自keras multi-head"
import keras
from keras_multi_head import MultiHeadAttention
input_layer = keras.layers.Input( shape=(2, 3), name='Input',)
att_layer = MultiHeadAttention( head_num=3, name='Multi-Head',)(input_layer)
model = keras.models.Model(inputs=input_layer, outputs=att_layer)
model.compile( optimizer='adam', loss='mse', metrics={},)
我一直在试图找到一些解释这一点的文件,但我还没有找到。
更新:
我发现第二个实现(MultiHeadAttention)更像是 Transformer 论文“Attention All You Need”。但是,我仍然在努力理解第一个实现,即包装层。
第一个(作为包装层)是否会将多头的输出与 LSTM 结合起来?
我想知道是否有人可以解释他们背后的想法,尤其是包装层。
【问题讨论】:
-
没有。我没试过。
标签: tensorflow keras deep-learning transformer attention-model