剖析点3:for l, x in zip(self.linears, (query, key, value))
作用:依次取出self.linears[0]和query,self.linears[1]和key,self.linears[2]和value 取名l和x,分别对这三对执行l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2)操作
等价于
l,x=self.linears[0],query
l,x=self.linears[1],key
l,x=self.linears[2],value
对每对l,x执行:l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2)
————————————————
版权声明:本文为CSDN博主「菜菜2022」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kz_java/article/details/123755475
import torch
a=[2,3,4,5]
b=torch.zeros(2,2,2)
c=torch.ones(2,2,2)
d=torch.rand(2,2,2)
print(b,b.shape)
print(c,c.shape)
print(d,d.shape)
print(“======================================“)
for x,y in zip(a,(b,c,d)):
print(x,y)
print(“shape:”,y.shape)
print(”=”)