torch.cat 沿负维度
torch.cat along negative dimension
在下面,
x_6 = torch.cat((x_1, x_2_1, x_3_1, x_5_1), dim=-3)
Sizes of tensors x_1, x_2_1, x_3_1, x_5_1 are
torch.Size([1, 256, 7, 7])
torch.Size([1, 256, 7, 7])
torch.Size([1, 256, 7, 7])
torch.Size([1, 256, 7, 7]) respectively.
The size of x_6 turns out to be torch.Size([1, 1024, 7, 7])
我无法理解和想象这种沿负维度(在本例中为 -3)的串联。
这里到底发生了什么?
如果 dim = 3,情况如何?
对于一组给定的张量,是否对 dim 有任何限制?
Python 提供负索引,因此您可以访问从列表末尾开始的元素,例如,-1 是列表的最后一个元素。
在这种情况下,张量有 4 个维度,所以 -3 实际上是第二个元素。
不完全正确,实际上错误从张量代数的角度来看,因为答案表明问题与访问或索引一个 Python 列表。不是。
-3
意味着我们沿着 2nd 维度连接张量。 (你可以很好地使用 1 而不是令人困惑的 -3)。
仔细观察张量形状,它们似乎代表(b, c, h, w)
,其中b
代表batch_size,c
代表通道数, h
代表高度,w
代表宽度。
通常是这种情况,在深度神经网络中编码(可能)图像的最后阶段的某个地方,我们得到这些特征图。
带有dim=-3
的torch.cat()
操作意味着我们沿着通道c
的维度连接这4个张量(见上文)。
4 * 256 => 1024
因此,所得张量的形状为 torch.Size([1, 1024, 7, 7])
。
注释:很难想象 4 维 space,因为我们人类生活在一个固有的 3D 世界中。不过,这里有一些我之前写的答案,这将有助于获得一些心理画面。
在下面,
x_6 = torch.cat((x_1, x_2_1, x_3_1, x_5_1), dim=-3)
Sizes of tensors x_1, x_2_1, x_3_1, x_5_1 are
torch.Size([1, 256, 7, 7])
torch.Size([1, 256, 7, 7])
torch.Size([1, 256, 7, 7])
torch.Size([1, 256, 7, 7]) respectively.
The size of x_6 turns out to be torch.Size([1, 1024, 7, 7])
我无法理解和想象这种沿负维度(在本例中为 -3)的串联。 这里到底发生了什么? 如果 dim = 3,情况如何? 对于一组给定的张量,是否对 dim 有任何限制?
Python 提供负索引,因此您可以访问从列表末尾开始的元素,例如,-1 是列表的最后一个元素。 在这种情况下,张量有 4 个维度,所以 -3 实际上是第二个元素。
-3
意味着我们沿着 2nd 维度连接张量。 (你可以很好地使用 1 而不是令人困惑的 -3)。
仔细观察张量形状,它们似乎代表(b, c, h, w)
,其中b
代表batch_size,c
代表通道数, h
代表高度,w
代表宽度。
通常是这种情况,在深度神经网络中编码(可能)图像的最后阶段的某个地方,我们得到这些特征图。
带有dim=-3
的torch.cat()
操作意味着我们沿着通道c
的维度连接这4个张量(见上文)。
4 * 256 => 1024
因此,所得张量的形状为 torch.Size([1, 1024, 7, 7])
。
注释:很难想象 4 维 space,因为我们人类生活在一个固有的 3D 世界中。不过,这里有一些我之前写的答案,这将有助于获得一些心理画面。