tf.contrib.seq2seq.LuongAttention

init(
num_units,
memory,
memory_sequence_length=None,
scale=False,
probability_fn=None,
score_mask_value=float(‘-inf’),
name=’LuongAttention’
)

参数 含义
num_units 在encoder阶段产生了多个特征向量,每个特征向量的大小
memory 一个batch里,encoder阶段产生的所有的特征向量,在RNNencoder中,维数为[batch_size, max_time, num_units],即encoder阶段产生了max_time个大小为num_units的特征向量
memory_sequence_length 记录memory中 的特征向量的长度,维数是[batch_size,],令memory中超过memory_sequence_length的值为0
scale 是否进行scale
probability_fn 将打分函数直接转成概率,默认的是softmax
score_mask_value 在将分数传到probability_fn函数之前的掩码值,在有Probability_fn函数的情况下才用

原理

论文为Effective Approaches to Attention-based Neural Machine Translation.

论文中提出了两种模式:Global Attention和Local Attention,Global Attention在encoder产生的所有信息中进行Attention操作,Local Attention在部分信息中进行Attention操作。

Global Attention

Tensorflow学习——Attention
针对encoder产生的时序特征向量hs,有一个与其长度相同的对齐向量at,at 相当于在t时刻对hs 的权重向量,作用就是在t时刻找到hs中对deocder有影响的部分, at 由decoder当前隐藏状态和hs 得到:

Tensorflow学习——Attention
文中使用了三种打分函数:
Tensorflow学习——Attention
最后一种将decoder当前隐藏状态hths直接相连进行打分,

相关文章:

  • 2021-10-15
  • 2021-12-06
  • 2021-11-28
  • 2021-06-30
猜你喜欢
  • 2021-08-22
  • 2021-11-04
  • 2021-05-24
  • 2021-05-17
  • 2021-09-21
  • 2021-04-23
  • 2021-12-09
相关资源
相似解决方案