在用pytoch搭建深度学习模型时,矩阵的乘法必不可少,下面介绍四种方法来实现矩阵的乘法
import torch
a = torch.randn(3, 4) # 建立一个3*4的张量
b = torch.randn(4, 3) # 建立一个4*3的张量
print(torch.mm(a, b)) # 1,矩阵乘法,调用函数,返回3*3的矩阵乘积
print(a.mm(b)) #2,矩阵乘法,内置方法,返回3*3的矩阵乘积
print(a @ b) #3,矩阵乘法,@运算符,返回3*3的矩阵乘积
print(torch.einsum("ab,bc->ac", a, b)) # 4,爱因斯坦求和乘法,返回3*3的矩阵乘积
a = torch.randn(2, 3, 4) # 建立一个2*3*4的张量
b = torch.randn(2, 4, 3) # 建立一个2*4*3的张量
print(torch.bmm(a, b)) #1,迷你批次矩阵乘法,调用函数,返回2*3*3的矩阵乘积
print(a.bmm(b)) # 2,迷你批次矩阵乘法,内置方法,返回2*3*3的矩阵乘积
print(a @ b) # 3, 矩阵乘法,@运算符,返回2*3*3的矩阵乘积,根据输入张量的形状决定调用批次矩阵乘法
print(torch.einsum("abc,acd->abd", a, b)) # 4, 爱因斯坦求和乘法,返回2*3*3的矩阵乘积
Done!!!