【发布时间】:2022-01-22 00:21:46
【问题描述】:
我有两个不同维度的张量 a 和 b。 a 的形状为 [100,100],b 的形状为 [100,3,10]。我想连接这两个张量。
例如:
a = torch.randn(100,100)
tensor([[ 1.3236, 2.4250, 1.1547, ..., -0.7024, 1.0758, 0.2841],
[ 1.6699, -1.2751, -0.0120, ..., -0.2290, 0.9522, -0.4066],
[-0.3429, -0.5260, -0.7748, ..., -0.5235, -1.8952, 1.2944],
...,
[-1.3465, 1.2641, 1.6785, ..., 0.5144, 1.7024, -1.0046],
[-0.7652, -1.2940, -0.6964, ..., 0.4661, -0.3998, -1.2428],
[-0.4720, -1.0981, -2.3715, ..., 1.6423, 0.0560, 1.0676]])
张量b如下:
tensor([[[ 0.4747, -1.9529, -0.0448, ..., -0.9694, 0.8009, -0.0610],
[ 0.5160, 0.0810, 0.1037, ..., -1.7519, -0.3439, 1.2651],
[-0.5975, -0.2000, -1.6451, ..., 1.3082, -0.4023, -0.3105]],
...,
[[ 0.4747, -1.9529, -0.0448, ..., -0.9694, 0.8009, -0.0610],
[ 0.1939, 1.0365, -0.0927, ..., -2.4948, -0.2278, -0.2390],
[-0.5975, -0.2000, -1.6451, ..., 1.3082, -0.4023, -0.3105]]],
dtype=torch.float64, grad_fn=<CopyBackwards>)
我想连接张量 a 中大小为 [100] 的第一行与张量 b 中大小为 [3,10] 的第一行连接。这应该适用于两个张量中的所有行。也就是说,简单来说,只考虑a 和b 中的第一行,我想得到一个大小为[100,130] 的输出,如下所示:
[ 1.3236, 2.4250, 1.1547, ..., -0.7024, 1.0758, 0.2841, 0.4747, -1.9529, -0.0448, ..., -0.9694, 0.8009, -0.0610, 0.5160, 0.0810, 0.1037, ..., -1.7519, -0.3439, 1.2651, -0.5975, -0.2000, -1.6451, ..., 1.3082, -0.4023, -0.3105]
为了做到这一点,我对张量 a 执行了unsqueezed 以得到两个相同维度的张量,如下所示。
a = a.unsqueeze(1)
当我执行torch.cat([a,b] 时,我仍然得到一个错误。有人可以帮我解决这个问题吗?
提前致谢。
【问题讨论】:
-
预期的输出大小是多少?
-
预期输出大小为 [100,130]。
标签: pytorch concatenation tensor torch