pytorch中的广播机制
广播机制
原理
-
广播机制有什么用?
广播机制实际上是在运算过程中,去处理两个形状不同向量的一种手段。
-
什么情况下会出现广播机制?
如果相加(数学运算)的两个数组的shape不同, 就会触发广播机制。
-
广播机制的规则(条件)是怎样的?
1> 两个张量都至少有一个维度
# 反例
x=torch.empty((0,))
y=torch.empty(2,2)
2> 按从右往左顺序看两个张量的每一个维度,x和y每个对应着的两个维度都需要能够匹配上
匹配含义:
a. 这两个维度的大小相等
b. 某个维度 一个张量有,一个张量没有
c. 某个维度 一个张量有,一个张量也有但大小是1
3> 对两个张量按元素进行数学运算
举例
x=torch.empty(5,3,4,1)
y=torch.empty( 3,1,1)
- 右对齐
- 将缺失维度修改成1
- 将为1的维度变为对应着的维度大小。
x=torch.empty(5,3,4,1)
y=torch.empty(5,3,4,1)
图示
a = torch.tensor([1,2,3])
b = torch.tensor([2])
c = a*b
a,a.shape,b,b.shape,c,c.shape

a = torch.tensor([[0],[10],[20],[30]])
b = torch.tensor([1,2,3])
c = a+b
a,a.shape,b,b.shape,c,c.shape
在这里插入图片描述