pytorch 与 numpy 的数组广播机制

numpy 的文档提到数组广播机制为:
When operating on two arrays, NumPy compares their shapes element-wise. It starts with the trailing dimensions, and works its way forward. Two dimensions are compatible when
they are equal, or

  1. one of them is 1
  2. If these conditions are not met, a ValueError: frames are not aligned exception is thrown, indicating that the arrays have incompatible shapes. The size of the resulting array is the maximum size along each dimension of the input arrays.

翻译过来就是,从两个数组地末尾开始算起,若轴长相等或者其中一个地维度为1,则认为是广播兼容的,否则是不兼容地。广播兼容的数组会在缺失的维度和长度为1的维度上进行。

例如:

a.shape + b.shape c.shape
(4, 1) + (1) --> (4, 1)
(4, 1) + (3,) --> (4, 3)
(2, 3, 4) + (1, 4) --> (2, 3, 4)
(2, 3, 4) + (3, 1) --> (2, 3, 4)
(2, 3, 4) + (2, 1, 1) --> (2, 3, 4)
(2, 3, 4) + (3, ) X
(4, 3) + (4,) X
(4, 3) + (3,) --> (4, 3)
(4, 3) + (3) --> (4, 3)

posted @ 2018-10-18 10:38  骏腾  阅读(1876)  评论(0编辑  收藏  举报