PyTorch中的常见乘法运算(*、@、Mul、Matmul)

哈达玛积:torch.mul()、torch.dot()、*

两个相同尺寸的张量相乘,然后对应元素的相乘就是哈达玛积,这种乘法要求参与运算的矩阵唯独相同,运算结果还是一个相同维度的矩阵。在这个运算中,torch.mul()和*以及torch.dot()的作用是等价的:

python 复制代码
a = torch.tensor([1,2])
b = torch.tensor([2,3])
print(a*b)
print(torch.mul(a,b))
>>> tensor([2, 6])
>>> tensor([2, 6])

这与除法的运算规则相同,torch中的torch.div()其实就是/, 类似的:torch.add就是+,torch.sub()就是-,不过符号的运算更简单常用:

python 复制代码
a = torch.tensor([1.,2.])
b = torch.tensor([2.,3.])
print(a/b)
print(torch.div(a/b))
>>> tensor([0.5000, 0.6667])
>>> tensor([0.5000, 0.6667])

矩阵乘法:torch.mm()、torch.matmul()、@

如果参与运算的是一个多维张量,那么最好torch.matmul(),由于广播机制的原因,在多维张量中,参与矩阵运算的其实只有后两个维度,前面的维度则被认为是batch:

python 复制代码
a = torch.tensor([1.,2.])
b = torch.tensor([2.,3.]).view(1,2)
print(torch.mm(a, b))
print(torch.matmul(a, b))
print(a @ b)

tensor([[2., 3.],
        [4., 6.]])
tensor([[2., 3.],
        [4., 6.]])
tensor([[2., 3.],
        [4., 6.]])
相关推荐
火山引擎开发者社区4 小时前
技术速递|使用 GitHub Copilot CLI 构建 Emoji 列表生成器
人工智能
codefan※4 小时前
干掉“幻觉“实战:如何构建企业级知识图谱增强 RAG
人工智能·知识图谱
wukangjupingbb5 小时前
传统基于药物 SMILES 序列和蛋白质氨基酸序列的 DTI(Drug-Target Interaction)预测方法的缺陷
人工智能
沪漂阿龙5 小时前
Codex 额度重置周期变化:AI 编程免费试玩时代正在结束
人工智能
TickDB5 小时前
美股行情 API 接入避坑:REST 快照、WebSocket 推送、盘前盘后数据的边界
人工智能·python·websocket·行情数据 api
装不满的克莱因瓶5 小时前
深入理解卷积神经网络(CNN)——从原理到代码实践
人工智能·神经网络·cnn
完成大叔5 小时前
模块二,Agent知识图谱的工具链思考
人工智能
lauo5 小时前
ibbot手机发布:搭载poplang技术 + token节点经济,革新AI手机体验
人工智能·智能手机
咖啡星人k5 小时前
云端开发环境技术架构深度解析:从容器隔离到AI Agent集成
人工智能·架构
袋鼠云数栈5 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能