如何解决巴赫达瑙的州规模注意
我的问题是解码器和编码器的H。
在一个实现中,我看到了一个具有以下尺寸的h编码器:[最大源Len,批处理大小,隐藏大小]
和具有以下尺寸的h解码器:[#lstm层,批处理大小,隐藏的暗淡]
如果W矩阵的尺寸必须相同,该如何计算加法: https://blog.floydhub.com/attention-mechanism/#bahdanau-att-step1
感谢您的帮助
解决方法
在原始的Bahdanau论文中,解码器只有一个LSTM层。有多种方法可以处理多层。通常要做的是在各层之间进行关注(您显然没有这么做,例如参见a paper by Google)。如果使用这样的多个解码器层,则只能使用最后一层(即,执行h_decoder[1]
),或者可以将这些层连接起来(例如,在手电筒调用torch.cat
或{{3}中) }(在第0维)。
矩阵 W decoder 和 W encoder 确保将编码器和解码器状态都投影到尺寸相同(无论您对解码器层所做的操作如何),因此可以进行求和。
唯一剩下的问题是编码器状态具有最大长度尺寸。这里的技巧是,您需要为投影解码器状态添加一个维度,以便广播总和,并且将投影解码器状态与所有编码器状态求和。在PyTorch中,只需在投影解码器状态的第0维的TensorFlow tf.concat
中调用unsqueeze
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。