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()方法作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值