机器学习张量运算——广播机制

发布时间 2023-10-22 16:39:00作者: Yohoc

概念介绍(基础)

 

练习*

用其他形状(例如三维张量)替换广播机制中按元素操作的两个张量。结果是否与预期相同?

a = torch.arange(20).reshape((5,1,4))
b = torch.arange(48).reshape((6,2,4))
(a+b).shape
RuntimeError: The size of tensor a (5) must match the size of tensor b (6) at non-singleton dimension 0
a = torch.arange(30).reshape((2,3,1,5))
b = torch.arange(60).reshape((3,4,5))
(a+b).shape
torch.Size([2, 3, 4, 5])

广播机制条件:

1)每个张量至少为1维

2)从后往前比张量形状,维度大小要么相等,要么其中一个等于1,要么其中一个不存在

 

总结*

广播机制规则:

  • 如果遵守以下规则,则两个tensor是“可广播的”:
    • 每个tensor至少有一个维度;
    • 遍历tensor所有维度时,从末尾随开始遍历,两个tensor存在下列情况:
      • tensor维度相等。
      • tensor维度不等且其中一个维度为1。
      • tensor维度不等且其中一个维度不存在。
  • 如果两个tensor是“可广播的”,则计算过程遵循下列规则:
    • 如果两个tensor的维度不同,则在维度较小的tensor的前面增加维度,使它们维度相等。
    • 对于每个维度,计算结果的维度值取两个tensor中较大的那个值。
    • 两个tensor扩展维度的过程是将数值进行复制