如何在我的模型中添加 tf.keras.layers.AdditiveAttention?

5 python machine-learning deep-learning keras attention-model

我正在研究机器语言翻译问题。我使用的模型是:

    Model = Sequential([
          Embedding(english_vocab_size, 256, input_length=english_max_len, mask_zero=True),
          LSTM(256, activation='relu'),
          RepeatVector(german_max_len),
          LSTM(256, activation='relu', return_sequences=True),
          Dense(german_vocab_size, activation='softmax')
    ])
Run Code Online (Sandbox Code Playgroud)

这里,english_vocab_sizeenglish_max_len分别是英语词汇中的英语单词总数和每个英语句子中的单词数。而同样是german_vocab_sizegerman_max_len

现在,如何tf.keras.layers.AdditiveAttention在此模型中添加图层?

编辑 - 我尝试了很多来找到tf.keras.layers.AdditiveAttention在 nlp 任务上实现层的好教程,但找不到任何教程。所以,我认为如果有人可以解释我如何tf.keras.layers.AdditiveAttention在这个模型中放置层,那么这个人将是第一个就如何使用给出非常清晰的解释的人,tf.keras.layers.AdditiveAttention因为它会非常清楚地实现如何使用tf.keras.layers.AdditiveAttention层!

ML8*_*L85 2

这将帮助您从上一个链接

如何用keras建立注意力模型?

context_vector, attention_weights = Attention(32)(lstm, state_h)
Run Code Online (Sandbox Code Playgroud)

或者

这是使用 Luong 式注意力的方法:

attention = tf.keras.layers.Attention()([query, value])
Run Code Online (Sandbox Code Playgroud)

以及 Bahdanau 式的关注:

attention = tf.keras.layers.AdditiveAttention()([query, value])
Run Code Online (Sandbox Code Playgroud)

改编后的版本:

weights = tf.keras.layers.Attention()([lstm, state_h])
Run Code Online (Sandbox Code Playgroud)