1. 关于pytorch中的数据操作的广播机制-LMLPHP

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

在这里,抓住“右对齐”来理解广播机制是非常有好处的,判断任意tensor间是否可以广播,只需按照以下步骤就绝对不会出错了:

将两操作对象的shape做右对齐
空缺的位置假想为1
比较同一位置处各操作对象的维数,若相同或有一个为1,则可以广播,否则无法广播
例如两个tensor的shape分别为(8, 1, 6, 5)和 (7, 1, 5),那么是否可以广播呢?
做右对齐, 空缺的位置假想为1:
8, 1, 6, 5
1, 7, 1, 5
按照以上规则得出是可以广播的,操作结果的shape应为(8, 7, 6, 5)

又如:
1. 关于pytorch中的数据操作的广播机制-LMLPHP
右对齐后,分别是:
2 3 1
1 1 2

因此也能进行广播机制

而如下,
右对齐后分别是:
2 3 4
1 1 2

是不能进行广播机制的,最后一列没有1,也不相同,并且报错中也说明了在维度2中不match
1. 关于pytorch中的数据操作的广播机制-LMLPHP

11-30 09:40