ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

torch中向量、矩阵乘法大总结

2021-07-11 18:03:04  阅读:330  来源: 互联网

标签:tensor mm torch 矩阵 print 向量 乘法


LawsonAbs的认知与思考,还请各位读者批判阅读。

总结
  • 文章来源:csdn:LawsonAbs
  • 持续更新~
  • 如下代码可以在我的Github库中找到。

1.点乘

点乘:就是向量的各个元素对应相乘。
比如现在我们有两个向量,a=[2,3], b=[-1,3],则其点乘结果是:7。可以有两种方法来计算:

1.1 使用 dot()方法

注意:这里的点乘并不是我们普通理解的那个向量乘法。

a = t.tensor([2, 3])
b = t.tensor([-1,3])
print(t.dot(a,b))

1.2 使用mm()方法

mm方法适用于矩阵的乘法。我们可以将一个向量看作是一个简单的1*m的矩阵,然后执行操作即可。代码如下:

"""2.使用tensor中的mm方法做向量乘法
01.mm 计算矩阵的乘法
02.这里是将向量转为一个矩阵,然后做乘法。实现dot做点乘的效果
"""
# a = t.tensor([1,2]) 这样并不是一个矩阵!!!只是一个类似list的tensor
a = t.tensor([[1,2]]) # 是一个矩阵
b = t.tensor([[2,3]]) # 是一个矩阵
b = t.transpose(b,0,1) # 转置后才有和a进行运算
print(a.shape,b.shape) 

print(t.mm(a,b))

这里是引用

执行结果如下:

在这里插入图片描述

matmul()方法使用精解

两个tensor的矩阵乘积。乘积的结果视tensor的维度而定:

  • 如果两个的tensor都是1维的,那么点积结果(是一个标量)将会被返回
'''
matrix x vector
'''
tensor1 = t.randn(3, 4)
tensor2 = t.randn(4)
print(tensor1)
print(tensor2)
out = t.matmul(tensor1, tensor2)
print(out)
print(out.size())

在这里插入图片描述

在这里插入图片描述

  • 如果两个tensor都是2维的,那么矩阵乘积结果将会被返回
  • 如果第一个参数是1维的,第二个参数是2维的,那么为了矩阵乘法就会在第一个参数中追加一维。在矩阵乘法之后,追加的维度就会被移除。
  • 高维矩阵相乘

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. *号计算乘法

2.1 使用*号做广播乘法

如下图所示:a,b是两个不同维度的矩阵,直接使用*号后便做一个广播乘法,得到结果。右侧给出了计算过程。
在这里插入图片描述

标签:tensor,mm,torch,矩阵,print,向量,乘法
来源: https://blog.51cto.com/lawsonabs/3036497

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有