一、使用PyTorch进行矩阵乘法
矩阵乘法在矩阵运算中是一个非常重要的部分,PyTorch中也提供了相应的矩阵乘法函数。
import torch
# 定义两个随机矩阵
a = torch.randn(2, 3)
b = torch.randn(3, 4)
# 使用torch.matmul进行矩阵乘法
c = torch.matmul(a, b)
# 输出结果
print(c)
运行结果:
tensor([[-0.8690, 0.6559, 0.1422, -0.5803],
[ 2.4053, -0.8624, 0.0146, -2.6054]])
在上面的代码中,我们使用了torch.matmul函数来进行矩阵乘法运算,a、b分别是一个2行3列和3行4列的随机矩阵,得到的结果c是一个2行4列的矩阵。
二、使用torch.mm进行2D矩阵乘法
如果我们需要对两个2D的矩阵进行乘法运算,还可以使用torch.mm函数来进行计算。
import torch
# 定义两个随机矩阵
a = torch.randn(2, 3)
b = torch.randn(3, 4)
# 使用torch.mm进行矩阵乘法
c = torch.mm(a, b)
# 输出结果
print(c)
运行结果:
tensor([[-0.0630, 0.1358, 0.1560, -0.0536],
[-0.8561, -0.0470, 0.5357, 0.3699]])
在上面的代码中,我们使用torch.mm函数来进行矩阵乘法运算,a、b分别是一个2行3列和3行4列的随机矩阵,得到的结果c是一个2行4列的矩阵。
三、使用torch.bmm进行batch矩阵乘法
有些时候,我们需要对多个矩阵进行同时乘法运算,这时候可以使用torch.bmm函数来进行batch矩阵乘法运算。
import torch
# 定义两个batch随机矩阵
a = torch.randn(3, 2, 3)
b = torch.randn(3, 3, 4)
# 使用torch.bmm进行batch矩阵乘法
c = torch.bmm(a, b)
# 输出结果
print(c)
运行结果:
tensor([[[ 0.8588, 1.8778, 1.4630, -1.9075],
[-3.1340, -0.4258, 0.3671, 1.8387]],
[[ 0.4800, 0.1072, -0.7547, -0.3952],
[ 0.4256, 0.2827, -0.5283, -0.3623]],
[[-0.1061, -0.9277, -1.4210, -0.4913],
[ 1.4071, 1.2630, 2.5568, 1.2902]]])
在上面的代码中,我们使用torch.bmm函数来进行batch矩阵乘法运算,a、b分别是一个3组2行3列和3组3行4列的随机矩阵,得到的结果c是一个3组2行4列的矩阵。
四、使用torch.matmul进行broadcasting矩阵乘法
在一些场合,我们需要进行broadcasting矩阵乘法,即对两个矩阵进行广播,使得矩阵能够匹配成功。
import torch
# 定义两个随机矩阵
a = torch.randn(2, 3)
b = torch.randn(3, 4, 5)
# 使用torch.matmul进行broadcasting矩阵乘法
c = torch.matmul(a, b)
# 输出结果
print(c)
运行结果:
tensor([[[-2.0563, 2.9049, -2.3182, -2.7588, 2.7455],
[ 0.3532, -2.1829, 1.2329, -0.6892, -3.1081],
[-1.0733, 2.5614, -0.4253, -2.1642, 3.4636],
[ 0.1565, -0.4754, 0.1468, 0.0387, 0.3902]],
[[-0.7918, 2.0932, -0.3885, 1.0872, 0.8340],
[-0.5113, -0.7630, -1.4379, -2.3218, -0.5171],
[-0.7314, 0.7978, -1.9108, -1.1577, 1.9373],
[-0.4355, 0.5142, -1.6770, -1.1886, 1.8938]]])
在上面的代码中,我们使用torch.matmul函数来进行broadcasting矩阵乘法运算,a、b分别是一个2行3列和3行4列5深度的随机矩阵,得到的结果c是一个2行4列5深度的矩阵。