【问题标题】:The definition of "heads" in MultiheadAttention in Pytorch Transformer modulePytorch Transformer 模块中 MultiheadAttention 中“heads”的定义
【发布时间】:2021-03-07 03:00:06
【问题描述】:

我对 Multihead 的定义有点困惑。
下面的[1]和[2]是一样的吗?

[1] 我对 multiplhead 的理解是多重注意力模式如下。
“多组 Query/Key/Value 权重矩阵(Transformer 使用八个注意力头,因此每个编码器/解码器最终有八组) 。”
http://jalammar.github.io/illustrated-transformer/

但是

[2] 在类 MultiheadAttention(Module) 中:在 Pytorch Transformer 模块中, 似乎 embed_dim 除以头数.. 为什么?

或者... embed_dim 首先是特征维度乘以头数?

self.head_dim = embed_dim // num_heads assert self.head_dim * num_heads == self.embed_dim, "embed_dim 必须能被 num_heads 整除"

https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/activation.py

【问题讨论】:

    标签: pytorch transformer


    【解决方案1】:

    根据您的理解,多头注意力是对某些数据的多次注意力。

    但相比之下,它不是通过将一组权重乘以所需注意力的数量来实现的。相反,您重新排列与注意力数量相对应的权重矩阵,即重塑为权重矩阵。所以,从本质上讲,它仍然是多次注意力,但你正在关注权重的不同部分。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2019-12-22
    • 2017-11-08
    • 2020-04-01
    • 2020-12-31
    • 1970-01-01
    • 2017-12-05
    • 2021-07-20
    相关资源
    最近更新 更多