首页 > 解决方案 > MultiheadAttention 中的 attn_output_weights

问题描述

我想知道 的矩阵是否attn_output_weight可以证明输入序列中每个单词对之间的关​​系。在我的项目中,我根据此输出绘制热图,它显示如下: 在此处输入图像描述

但是,我几乎无法从这张热图中看到任何信息。我参考别人的工作,他们的热图是这样的。至少矩阵的对角线应该有深色。在此处输入图像描述

然后我想知道我绘制热图的方法是否正确(即直接使用 的输出attn_output_weight)如果这不是正确的方法,请您告诉我如何绘制热图?

标签: pythondeep-learningnlppytorchattention-model

解决方案


看来您的值范围相当有限。在目标示例中,值的范围介于 之间[0, 1],因为每一行代表 softmax 分布。这从注意力的定义中可以看出:

在此处输入图像描述

我建议你对每一行/列进行归一化(根据你使用的注意力实现),最后可视化 range 中的注意力图[0, 1]。您可以使用参数vminvmax分别在 matplotlib 绘图中执行此操作。

如果这不能解决问题,可以添加一段代码,其中包含您正在使用的模型和可视化脚本。


推荐阅读