Pytorch中矩阵乘法使用及案例

六种矩阵乘法

torch中包含许多矩阵乘法,大致可以分为以下几种:

  • *:即a * b 按位相乘,要求ab的形状必须一致,支持广播操作

  • torch.matmul():最广泛的矩阵乘法

  • @:与torch.matmul()效果一样(等价),即torch.matmul(a, b) == a @ b

  • torch.dot():两个一维向量乘法,不支持广播

  • torch.mm():两个二维矩阵的乘法,不支持广播

  • torch.bmm():两个三维矩阵乘法(批次batch粒度),且两个矩阵必须是三维的,不支持广播操作

其中,torch.matmul()中包含torch.dot()torch.mm()torch.bmm()

代码验证

torch.dot()

python 复制代码
a = torch.tensor([2, 3])
b = torch.tensor([2, 1])

## 下面四个函数的结果是一样的  结果都是7
a.dot(b)
torch.dot(a, b)
a @ b
torch.matmul(a, b)

输出结果:

torch.matmul()torch.dot()的主要区别就是,当两个向量(矩阵)的维度不一致时,torch.matmul()会进行广播 ,而torch.dot()会报错

*

对向量ab进行按位相乘

python 复制代码
a = torch.tensor([2, 3])
b = torch.tensor([2, 1])

a * b  # [4, 3]

torch.mm()

用于二维矩阵的相乘------第一个向量的 和第二个向量的 必须相等

python 复制代码
mat1 = torch.randn(2, 3)
mat2 = torch.randn(3, 3)

## 下面三个输出结果是一样的
torch.mm(mat1, mat2)
mat1.matmul(mat2)
mat1 @ mat2

输出结果:

torch.matmul()torch.mm()的主要区别就是,当两个矩阵的维度不一致时,torch.matmul()会进行广播 ,而torch.mm()会报错

torch.bmm()

应用于三维矩阵,要求:

  • 两个矩阵的第一个维度的大小必须相同
  • 必须满足第一个矩阵:(b × n × m),第二个矩阵:(b × m × p),即第一个矩阵的第三个维度必须和第二个矩阵的第二个维度相同
  • 输出大小:(b × n × p)

该函数相当于分别对每个batch进行二维矩阵相乘

python 复制代码
bmat1 = torch.randn(2, 1, 4)
bmat2 = torch.randn(2, 4, 2)

## 下面三个输出是一样的
torch.bmm(bmat1, bmat2)
bmat1.matmul(bmat2)
bmat1 @ bmat2

输出结果:

换一种角度想,torch.bmm()就是相当于按照批次batch进行索引,然后将每个批次内的二维矩阵进行相乘

python 复制代码
for i in range(bmat1.shape[0]):  # 索引出来批次bmat1.shape[0]
    temp =torch.mm(bmat1[i, :, :], bmat2[i, :, :])
    print(temp)
相关推荐
一念&5 分钟前
今日科技热点 | AI创新、量子计算突破与5G应用加速:引领未来的技术浪潮
人工智能·科技·量子计算
亚马逊云开发者11 分钟前
快时尚电商行业智能体设计思路与应用实践(三)借助 Transcribe/Polly 打造新一代智能语音客服,实现媲美人工客服的对话体验
人工智能
岛屿旅人24 分钟前
欧盟《人工智能法案》生效一年主要实施进展概览(二)
网络·人工智能·安全·web安全·架构
阿Paul果奶ooo30 分钟前
数据分析与数据挖掘
人工智能·数据挖掘·数据分析
茫茫人海一粒沙31 分钟前
LoRA 微调后幻觉排查 Checklist
人工智能
万邦科技Lafite38 分钟前
京东API分类接口实战指南:获取各类商品信息
数据库·人工智能·api接口·开放api·电商开放平台
nnerddboy42 分钟前
预测模型及超参数:2.传统机器学习:PLS及其改进
人工智能·机器学习
IT_陈寒1 小时前
Python数据处理太慢?这5个Pandas优化技巧让速度提升300%!
前端·人工智能·后端
大模型真好玩1 小时前
深入浅出LangGraph AI Agent智能体开发教程(一)—全面认识LangGraph
人工智能·python·mcp
钢铁男儿1 小时前
PyTorch 机器学习基础(机器学习一般流程)
人工智能·pytorch·机器学习