pytorch的广播机制

广播机制,就是将不同维度、不同长度的Tensor,在满足一定规则的前提下能够自动进行长度和维度的扩充,从而使不同维度、不同长度的Tensor之间正确的进行运算。

自动广播规则:两个tensor能够进行自动广播需要满足以下几个规则:

  • 每个维度的大小都相等
  • 每个Tensor至少有一个维度(不为空,如 ([2],))
  • 从最里面的维度开始遍历,两个Tensor对应维度的大小必须满足如下三个条件中的任一个:
    1. 对应相等
    2. 其中一个Tensor的大小等于1
    3. 其中一个Tensor的某个维度不存在
x = torch.Tensor([2])
y = torch.Tensor([[3],[5]])
# x将自动扩展为[[2],[2]],然后参与运算
print(x+y)
>>  tensor([[5.],[7.]])
# 二者可以
x = troch.randn(2,3,4,5,6,7)
y = torch.rand(3,4,1,1,7)

# 二者不可以
x = troch.randn(2,3,4,5,6,7)
y = torch.rand(5,4,1,1,7)

 

posted @ 2021-11-22 13:59  Liang-ml  阅读(405)  评论(0)    收藏  举报