PyTorch 1.0 中文文档:广播语义

2022-05-07 14:07:37 浏览数 (1)

译者:冯宝宝

许许多多的PyTorch操作都支持NumPy Broadcasting Semantics

简而言之,如果PyTorch操作支持广播,那么它的Tensor参数可以自动扩展为相同的类型大小(不需要复制数据)。

一般语义

如果遵守以下规则,则两个张量是“可广播的”:

  • 每个张量至少有一个维度;
  • 遍历张量维度大小时,从末尾随开始遍历,两个张量的维度大小必须相等,它们其中一个为1,或者一个不存在。

例如:

代码语言:javascript复制
>>> x=torch.empty(5,7,3)
>>> y=torch.empty(5,7,3)
# 相同形状的张量可以被广播(上述规则总是成立的)

>>> x=torch.empty((0,))
>>> y=torch.empty(2,2)
# x和y不能被广播,因为x没有维度

# can line up trailing dimensions
>>> x=torch.empty(5,3,4,1)
>>> y=torch.empty(  3,1,1)
# x和y能够广播.
# 1st trailing dimension: both have size 1
# 2nd trailing dimension: y has size 1
# 3rd trailing dimension: x size == y size
# 4th trailing dimension: y dimension doesn't exist

# 但是:
>>> x=torch.empty(5,2,4,1)
>>> y=torch.empty(  3,1,1)
# x和y不能被广播  (   )  

阅读全文/改进本文

0 人点赞