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

在某些情况下,即使形状不同,我们仍然可以通过调用 广播机制(broadcasting mechanism)来执行按元素操作。 这种机制的工作方式如下:首先,通过适当复制元素来扩展一个或两个数组, 以便在转换之后,两个张量具有相同的形状。 其次,对生成的数组执行按元素操作。

1. 关于pytorch中的数据操作的广播机制_第1张图片

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中的数据操作的广播机制_第2张图片
右对齐后,分别是:
2 3 1
1 1 2

因此也能进行广播机制

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

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

你可能感兴趣的:(深度学习,pytorch,深度学习,人工智能)