10.3.2 加性注意力
这里查询,键和值的形状不要看书上,看我下面写的文字
- 对于查询来说,第一维的确是批量大小,可以忽略不管;第二维是一个批量中查询
的个数;第三维是每个查询 的特征维度(代码中的query_size
) - 对于键来说,第一维的确是批量大小,可以忽略不管;第二维是键值对个数,也就是键的个数,也就是值的个数;第三维是每个键
的特征维度(代码中的key_size
) - 对于值来说,第一维的确是批量大小,可以忽略不管;第二维是键值对个数,也就是键的个数,也就是值的个数;第三维是每个值
的特征维度
现在加性注意力想要干的事情,也就是跟前面一样,找出加权平均数的权重。假设现在查询已经定下来了,为
由于现在查询和键的维度大小是不同的,所以现在必须用一个矩阵乘法将他们转成维度一样的向量(这个向量有num_hiddens
这么多维度)
对于features = queries.unsqueeze(2) + keys.unsqueeze(1)
,之所以要使用unsqueeze
是为了加法广播
nn.Dropout
无论输入多少维,都是对张量中的每一个元素单独进行丢弃
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构