【问题标题】:State dimensions in Bahdanau AttentionBahdanau 中的状态维度 注意
【发布时间】:2020-09-22 23:16:24
【问题描述】:

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

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

在一个实现中,我看到一个 h 编码器,其尺寸为:[max source Len, batch size, hidden size]

和一个具有以下维度的 h 解码器:[#lstm 层、批量大小、隐藏的暗淡]

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

感谢您的帮助

【问题讨论】:

    标签: deep-learning lstm attention-model seq2seq


    【解决方案1】:

    在原始 Bahdanau 的论文中,解码器只有一个 LSTM 层。有多种方法可以处理多个层。通常要做的事情是在层之间进行注意力(显然您没有这样做,请参见例如a paper by Google)。如果你像这样使用多个解码器层,你可以只使用最后一层(即,做h_decoder[1]),或者,你可以连接层(即,在火炬调用torch.cattf.concat在第0个尺寸)。

    矩阵 WdecoderWencoder 确保编码器和解码器状态都投影到相同的维度(不管你对解码器层做了什么),所以你可以进行求和。

    唯一剩下的问题是编码器状态具有最大长度维度。这里的技巧是您需要为投影解码器状态添加一个维度,因此总和会被广播,并且投影解码器状态会与所有编码器状态相加。在 PyTorch 中,只需调用 unsqueeze,在 TensorFlow 中,在投影解码器状态的第 0 维中调用 expand_dims

    【讨论】:

    • 这是一个很好的答案。谢谢!
    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多