pytorch之torch中的几种乘法 #点乘torch.mm() #矩阵乘torch.mul(),torch.matmul() #高维Tensor相乘维度要求

1. 点乘——torch.mul(a, b)

点乘是对应位置元素相乘
点乘都是broadcast的,可以用torch.mul(a, b)实现,也可以直接用*实现。

python中的广播机制(broadcasting)
broadcasting可以这样理解:如果你有一个(m,n)的矩阵,让它加减乘除一个(1,n)的矩阵,它会被复制m次,成为一个(m,n)的矩阵,然后再逐元素地进行加减乘除操作。同样地对(m,1)的矩阵成立
在这里插入图片描述
图源:https://www.jianshu.com/p/fadd169cd396

  • 当a, b维度满足广播机制时,会自动填充到相同维度相点乘。
    例如:a的维度为(2,3),b的维度为(1,3);
    或者:a的维度为(2,3),b的维度为(2,1)。
  • 当a, b维度不满足广播机制时,要求a和b的维度必须相等。
    a的维度为(1,2),b的维度为(2,3)就会报错:The size of tensor a (2) must match the size of tensor b (3) at non-singleton dimension 1
    报错的意思是b中维度为3的位置必须和a中维度为2的位置相匹配,因为a中有个维度1,要想满足广播机制就必须是(1,2)和(2,2),否则就需要满足维度必须相等(2,3)和(2,3)
import torch

a = torch.ones(3,4)
print(a)
b = torch.Tensor([1,2,3]).reshape((3,1))
print(b
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏普通

谢谢打赏~普通在此谢过

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值