torch.dot()向量点乘,向量点乘计算方法, torch.dot如何计算的
大学的线性代数知识,忘了,再来回顾下:
1. 代码:
inputs = torch.tensor([[0.43, 0.15, 0.89], # Your (x^1)[0.55, 0.87, 0.66], # journey (x^2)[0.57, 0.85, 0.64], # starts (x^3)[0.22, 0.58, 0.33], # with (x^4)[0.77, 0.25, 0.10], # one (x^5)[0.05, 0.80, 0.55] # step (x^6)
])query = inputs[1]attn_scores_2 = torch.empty(inputs.shape[0]);
for i, x_i in enumerate(inputs):attn_scores_2[i] = torch.dot(x_i, query) # 0.43*0.55 + 0.15*0.87 + 0.89*0.66 ==> 0.2365 + 0.1305 + 0.5874 = 0.9544
print(attn_scores_2)
打印的结果为:
tensor([0.9544, 1.4950, 1.4754, 0.8434, 0.7070, 1.0865])
2. 那么torch.dot 是如何计算的呢?
首先query为 取出第一行即 [0.55, 0.87, 0.66]
for i, x_i in enumerate(inputs) 为对inputs向量循环
第一次 x_i = [0.43, 0.15, 0.89] # Your
第二次数据为 x_i = [0.55, 0.87, 0.66] #代码 journey做向量化前的英文表示
以此类推x_i 每行等于多少
当循环进入第一次时
torch.dot[x_i, query]
||
torch.dot[[0.43,0.15,0.89], [0.55, 0.87,0.66]]
||
(0.43*0.55) + (0.15*0.87) + (0.89*0.66)
||
0.2365 + 0.1365 + 0.5874
||
0.9544
即可得出第一个数字 0.9544,attn_score_2[0]=0.9544, attn_score_2 其他数值同上计算即可
即 每行对应的数字进行相乘,最后数字相加 即为torch.dot()方法作用