巴赫达瑙的州规模注意

时间:2020-09-22 23:16:24

标签: deep-learning lstm attention-model seq2seq

我目前正在尝试计算此函数以引起Bahdanau的注意 enter image description here

我的问题是解码器和编码器的H。

在一个实现中,我看到了一个具有以下尺寸的h编码器:[最大源Len,批处理大小,隐藏大小]

和具有以下尺寸的h解码器:[#lstm层,批处理大小,隐藏的暗淡]

如果W矩阵的尺寸必须相同,该如何计算加法: https://blog.floydhub.com/attention-mechanism/#bahdanau-att-step1

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

在原始的Bahdanau论文中,解码器只有一个LSTM层。有多种方法可以处理多层。通常要做的是在各层之间进行关注(您显然没有这么做,例如参见a paper by Google)。如果使用这样的多个解码器层,则只能使用最后一层(即,执行h_decoder[1]),或者可以将这些层连接起来(例如,在手电筒调用torch.cat或{{3}中) }(在第0维)。

矩阵 W decoder W encoder 确保将编码器和解码器状态都投影到尺寸相同(无论您对解码器层所做的操作如何),因此可以进行求和。

唯一剩下的问题是编码器状态具有最大长度尺寸。这里的技巧是,您需要为投影解码器状态添加一个维度,以便广播总和,并且将投影解码器状态与所有编码器状态求和。在PyTorch中,只需在投影解码器状态的第0维的TensorFlow tf.concat中调用unsqueeze