我试图以两种方式重复火炬的张量.例如,{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}
Run Code Online (Sandbox Code Playgroud)
有一个内置的火炬:repeatTensor函数,它将生成两个中的第一个(如numpy.tile()),但我找不到后者(如numpy.repeat()).我确信我可以在第一次调用sort来给第二个,但我认为对于更大的数组,这可能在计算上是昂贵的?
谢谢.
小智 13
尝试 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])
Run Code Online (Sandbox Code Playgroud)
引用https://discuss.pytorch.org/t/how-to-tile-a-tensor/13853 -
Run Code Online (Sandbox Code Playgroud)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 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9
这将使您直观地了解它是如何工作的。
a = torch.Tensor{1,2,3,4}
Run Code Online (Sandbox Code Playgroud)
为了让{1,2,3,4,1,2,3,4,1,2,3,4}我们在第一维中重复三次张量:
a:repeatTensor(3)
Run Code Online (Sandbox Code Playgroud)
为了让{1,1,1,2,2,2,3,3,3,4,4,4}我们在张量中添加一个维度并在第二维中重复三次以获得4 x 3张量,我们可以将其展平.
b = a:reshape(4,1):repeatTensor(1,3)
b:view(b:nElement())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9430 次 |
| 最近记录: |