10.3.2 加性注意力

这里查询,键和值的形状不要看书上,看我下面写的文字

  • 对于查询来说,第一维的确是批量大小,可以忽略不管;第二维是一个批量中查询z的个数;第三维是每个查询z的特征维度(代码中的query_size
  • 对于键来说,第一维的确是批量大小,可以忽略不管;第二维是键值对个数,也就是键的个数,也就是值的个数;第三维是每个键x的特征维度(代码中的key_size
  • 对于值来说,第一维的确是批量大小,可以忽略不管;第二维是键值对个数,也就是键的个数,也就是值的个数;第三维是每个值y的特征维度

现在加性注意力想要干的事情,也就是跟前面一样,找出加权平均数的权重。假设现在查询已经定下来了,为q(注意这是一个查询,也就是上文的z),那么对于某一个键k(注意这是一个键,也就是上文的x),其权重为a(q,k)
由于现在查询和键的维度大小是不同的,所以现在必须用一个矩阵乘法将他们转成维度一样的向量(这个向量有num_hiddens这么多维度)
对于features = queries.unsqueeze(2) + keys.unsqueeze(1),之所以要使用unsqueeze是为了加法广播
nn.Dropout无论输入多少维,都是对张量中的每一个元素单独进行丢弃

posted @   最爱丁珰  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示