You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch中nn.Linear实例如何处理张量元组?以Annotated Transformer为例

代码逻辑解析

这段代码里并没有把元组(query, key, value)整体传入nn.Linear()实例,你误解了循环的配对逻辑:

  • zip(self.linears, (query, key, value))会将线性层列表的前3个元素,分别和元组内的query、key、value一一对应配对:
    • 第一个线性层self.linears[0]对应单个张量query
    • 第二个线性层self.linears[1]对应单个张量key
    • 第三个线性层self.linears[2]对应单个张量value
  • 循环中的lin(x)是逐个独立处理:每次取一组配对(一个线性层+一个单独的张量),用线性层对该张量执行线性变换,完全不存在元组被拼接成张量的操作。

后续的.view(nbatches, -1, self.h, self.d_k).transpose(1, 2)是把线性变换后的张量拆分多头维度,最终分别更新query、key、value,为多头注意力计算做准备。


内容的提问来源于stack exchange,提问作者Lukas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:22:03