Numpy Pyrotch重复第三维

Numpy Pyrotch重复第三维,numpy,pytorch,tensor,Numpy,Pytorch,Tensor,我在下面的例子中 到目前为止,一切顺利 但为什么在三维空间上重复一次会将三维尺寸扩展到3(而不是1) 仔细检查 In [43]: x.repeat(4,2,1) Out[43]: tensor([[[1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2

我在下面的例子中

到目前为止,一切顺利

但为什么在三维空间上重复一次会将三维尺寸扩展到3(而不是1)

仔细检查

In [43]: x.repeat(4,2,1)
Out[43]:
tensor([[[1, 2, 3],
         [1, 2, 3]],

        [[1, 2, 3],
         [1, 2, 3]],

        [[1, 2, 3],
         [1, 2, 3]],

        [[1, 2, 3],
         [1, 2, 3]]])
为什么它会这样呢?

它只会沿着第一个维度扩展一次大小([3])张量。(4,2,1)是重复(3,)张量的次数。最后的张量是(4,2,3),因为你在最后一个轴上重复(3,)一次,在第二个轴上重复两次,在第一个轴上重复4次

x = torch.tensor([1, 2, 3])
x.shape
那么


用更多细节更新了我的答案你是说当重复时,总是从较大的尺寸开始复制吗?我是说第一个尺寸是最外层的括号,而最后一个尺寸将包含原始数组。对一维张量成像-
[1,2,3]
。使其成为二维阵列只需在其外部添加括号-
[[1,2,3]]
,其形状为
(1,3)
。接下来制作一个3D数组-
[[1,2,3]]
,它的形状是
(1,1,3)
。这应该会让你直观地知道为什么以上述方式重复会导致
(4,2,3)
。不知道为什么这个答案会被否决。这正确地回答了OP提出的问题。答案和问题都有详细的解释。
In [43]: x.repeat(4,2,1)
Out[43]:
tensor([[[1, 2, 3],
         [1, 2, 3]],

        [[1, 2, 3],
         [1, 2, 3]],

        [[1, 2, 3],
         [1, 2, 3]],

        [[1, 2, 3],
         [1, 2, 3]]])
x = torch.tensor([1, 2, 3])
x.shape
torch.Size([3])
xx = x.repeat(4,2,1)
xx.shape
torch.Size([4, 2, 3])