分批划分 3D 张量 (Pytorch)

Division in batches of a 3D tensor (Pytorch)

我有一个大小为 100x5x2 的 3D 张量,横跨轴的张量的平均值 = 1,其形状为 100x2。 这里的 100 是批量大小。通常没有批次,形状为 5x2 和 2 的张量的除法工作得很好,但是对于有批次的 3D 张量,我收到错误。

a = torch.rand(5,2)
b = torch.rand(2)
z=a/b

给了我预期的答案。

a = torch.rand(100,5,2)
b = torch.rand(100,2)
z=a/b

给我以下错误。

张量 a (5) 的大小必须与非单维 1 处的张量 b (100) 的大小匹配。

如何划分这些张量以使我的输出形状为 100x5x2?像 bmm 这样的除法?

只需执行:

z = a / b.unsqueeze(1)

这在 b 中添加了一个额外的维度,并使其形状为 (100, 1, 2),与 a 的广播兼容。