广播机制
在某些情况下,即使形状不同,我们仍然可以通过调用 广播机制(broadcasting mechanism)来执行按元素操作。这种机制的工作方式如下:
- 通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状;
- 对生成的数组执行按元素操作。
你尝试对两个形状不匹配的张量进行元素级(element-wise)操作时,如加法、减法、乘法等,PyTorch会尝试进行广播(broadcasting)以使得这两个张量在形状上兼容。广播是一种强大的机制,它允许NumPy和PyTorch等库对形状不同的数组进行数值计算。
a = torch.arange(3).reshape((3, 1))
b = torch.arange(4).reshape((1, 4))
print(a+b)
tensor([[0, 1, 2, 3],
[1, 2, 3, 4],
[2, 3, 4, 5]])
# 注释总结:
# a和b的形状分别是(3, 1)和(1, 4),但由于PyTorch的广播规则,我们可以将它们相加。
# 结果是一个(3, 4)的张量,其中每个元素都是a和b中对应元素的和。
索引和切片
在任何其他Python数组中一样,张量中的元素可以通过索引访问。与任何Python数组一样:第一个元素的索引是0,最后一个元素索引是‐1;可以指定范围以包含第一个元素和最后一个之前的元素。
我们可以用[-1]选择最后一个元素,可以用[