我正在尝试以两种方式重复torch中的张量。例如,将张量{1,2,3,4}
重复两种方式3次以产生结果;
{1,2,3,4,1,2,3,4,1,2,3,4}
{1,1,1,2,2,2,3,3,3,4,4,4}
有一个内置的torch: generate张量函数,它将生成两个函数中的第一个(如numpy.tile()
),但我找不到一个用于后者(如numpy.repeat()
)。我确信我可以在第一个数组上调用sort来给出第二个数组,但我认为对于较大的数组,这可能会耗费大量的计算资源。
谢谢。
发布于 2020-01-03 19:08:02
尝试torch.repeat_interleave()方法:https://pytorch.org/docs/stable/torch.html#torch.repeat_interleave
>>> x = torch.tensor([1, 2, 3])
>>> x.repeat_interleave(2)
tensor([1, 1, 2, 2, 3, 3])
发布于 2018-09-10 21:38:47
引用https://discuss.pytorch.org/t/how-to-tile-a-tensor/13853 -
z= torch.FloatTensor([1,2,3,4,5,6,7,8,9]) 1 2 3 4 5 6 7 8 9 z.transpose(0,1).repeat(1,3).view(-1,3).transpose(0,1) 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 7 7 7 8 8 8 9 9
这将给你一个直观的感觉,它是如何工作的。
发布于 2016-02-14 11:15:43
a = torch.Tensor([1,2,3,4])
为了得到[1., 2., 3., 4., 1., 2., 3., 4., 1., 2., 3., 4.]
,我们在第一维重复张量三次:
a.repeat(3)
为了得到[1,1,1,2,2,2,3,3,3,4,4,4]
,我们向张量添加一个维度,并在第二个维度中重复三次,以获得4 x 3
张量,我们可以将其展平。
b = a.reshape(4,1).repeat(1,3).flatten()
或
b = a.reshape(4,1).repeat(1,3).view(-1)
https://stackoverflow.com/questions/35227224
复制相似问题