1 引言
做深度学习过程中免不了使用pytorch,刚上手可能觉得pytorch是一门新语言。过一段时间之后发现其用法跟python极其相似,python的很多函数名都可以用到torch中。当然也有一些不同,毕竟张量的计算可以用GPU啊。
2 torch.mul(a, b)
torch.mul(a, b) 是矩阵 a a a 和 b b b 对应位相乘, a a a 和 b b b 的维度必须相等,比如 a a a的维度是 ( 1 , 2 ) (1, 2) (1,2), b b b 的维度是 ( 1 , 2 ) (1, 2) (1,2),返回的仍是 ( 1 , 2 ) (1, 2) (1,2)的矩阵,和 a ∗ b a*b a∗b 效果相同。其实这个矩阵或者向量的乘法操作就是 H a d a m a r d Hadamard Hadamard 乘积哈达玛乘积,具体操作细节查看如下。这个操作跟乘以b一样。
import torch
a = torch.tensor([[1,1],
[2,2]])
b = torch.tensor([[1,1],
[0,2]])
result2 = torch.mul(a,b) # 对应位相乘
result2: tensor([[1, 1],
[0, 4]])
result3 = a * b # 对应位相乘
result3: tensor([[1, 1],
[0, 4]])
3 torch.mm(a, b)
torch.mm(a, b) 是矩阵a和b矩阵相乘,比如a的维度是(1, 2),b的维度是(2, 3),返回的就是(1, 3)的矩阵。这个操作很熟悉了,这就是很常用的矩阵运算。
下面看几行代码
import torch
a = torch.tensor([[1,1],
[2,2]])
b = torch.tensor([[1,1],
[0,2]])
result1 = torch.mm(a,b) # 矩阵相乘
result1: tensor([[1, 3],
[2, 6]])
4 torch.matmul()
torch.matmul()的用法比torch.mm更高级,torch.mm只适用于二维矩阵,而torch.matmul可以适用于高维。当然,对于二维的效果等同于torch.mm()。关于torch.matmul的详细介绍可以看torch.matmul()用法介绍。