当两个张量的形状不完全匹配时,PyTorch中的广播机制可以自动地将它们扩展到相同的形状,以便进行元素级别的操作,如求和。
以下是一个例子,演示了如何使用广播机制进行张量的求和:
import torch
# 创建两个张量
a = torch.tensor([[1, 2, 3],
[4, 5, 6]]) # 形状为 (2, 3)
b = torch.tensor([10, 20, 30]) # 形状为 (3,)
# 使用广播进行求和
c = a + b
print(c)
在这个例子中,我们创建了一个形状为(2, 3)的张量a,和一个形状为(3,)的张量b。它们的形状不匹配,无法直接进行相加。
但是,由于PyTorch的广播机制,它会自动地将b张量扩展为(2, 3)的形状,使得它的每一行都与a的对应行进行相加。相当于将b在第0维度(行)进行复制,扩展为:
[[10, 20, 30],
[10, 20, 30]]
然后,a和扩展后的b形状匹配,可以进行元素级别的求和。最终的结果保存在张量c中,形状与a相同。
输出结果为:
tensor([[11, 22, 33],
[14, 25, 36]])
这里,c的每个元素都是对应位置的a和b元素的和。
通过广播机制,我们可以方便地对不同形状的张量进行逐元素的操作,而不需要显式地扩展维度。这种方式能够提高代码的简洁性和可读性。
1569

被折叠的 条评论
为什么被折叠?



