如何计算 PyTorch 中注意力分数和编码器输出的加权平均值?

Posted

技术标签:

【中文标题】如何计算 PyTorch 中注意力分数和编码器输出的加权平均值?【英文标题】:How do I compute the weighted average of attention scores and encoder outputs in PyTorch? 【发布时间】:2021-12-05 19:06:21 【问题描述】:

我目前正在尝试在 PyTorch 中实现具有注意力的 LSTM,一旦涉及批量大小和多维张量,我突然忘记了线性代数是如何工作的。我有一个大小为 [64, 19, 1] 的注意力分数张量,其中 64 是批量大小,19 是源句子的最大长度。我还有一个编码器输出的张量(隐藏状态);它的形状是 [64, 19, 256],其中 256 是隐藏状态的维度。计算上下文向量/注意力分数和编码器隐藏状态的加权平均值的好方法是什么?不幸的是,当涉及到两个以上的维度/包括批量大小时,我的大脑无法推理这些事情。

【问题讨论】:

【参考方案1】:

就像context = torch.sum(attention * encoder_hidden, dim=1)一样简单。

【讨论】:

以上是关于如何计算 PyTorch 中注意力分数和编码器输出的加权平均值?的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch实现GAT(基于PyTorch实现)

参考《深度学习之PyTorch实战计算机视觉》PDF

PAT甲题题解-1081. Rational Sum (20)-模拟分数计算

医疗图像领域的常见问题总结 | 笔记 | 2023-03-07

习题4-3 求分数序列前N项和 (15分)

我们如何在 PyTorch 中将线性层的输出提供给 Conv2D?