本文参考的资料有PYTORCH BROADCASTING SEMANTICS1、NUMPY BROADCASTING2,搭配一些个人理解。
什么是广播机制?
如果一个Pytorch运算支持广播的话,那么就意味着传给这个运算的参数会被自动扩张成相同的size,在不复制数据的情况下就能行。
广播机制实际上就是在运算过程中,去处理两个形状不同向量的一种手段2。
Numpy通过广播机制3,可以让循环在C中而不是Python中进行。整个过程可以做到避免无用的复制,达到更高效的运算。
两个张量可广播的前提
前提1: 两个张量都至少有一个维度。
像下面这种情况下就不行,因为x不满足这个条件。
x=torch.empty((0,))
y=torch.empty(2,2)