如何在PyTorch中以特定的新维度重复张量

如何在PyTorch中以特定的新维度重复张量,pytorch,repeat,Pytorch,Repeat,如果我有一个张量a,它的形状[M,N], 我想重复张量K次,以便结果B具有形状[M,K,N] 并且每个片B[:,k,:]应该具有与A相同的数据。 这是没有for循环的最佳实践。 K可能在其他维度中 torch.repeat\u interleave()和tensor.repeat()似乎不起作用。或者我用错了。应该适合您的需要,但您需要先插入一个单位维度。为此,我们可以使用或。由于unsqueze是专门定义为插入单一维度的,因此我们将使用它 B = A.unsqueeze(1).repeat(1

如果我有一个张量
a
,它的形状
[M,N]
, 我想重复张量K次,以便结果
B
具有形状
[M,K,N]
并且每个片
B[:,k,:]
应该具有与
A
相同的数据。 这是没有for循环的最佳实践。
K
可能在其他维度中

torch.repeat\u interleave()
tensor.repeat()
似乎不起作用。或者我用错了。

应该适合您的需要,但您需要先插入一个单位维度。为此,我们可以使用或。由于
unsqueze
是专门定义为插入单一维度的,因此我们将使用它

B = A.unsqueeze(1).repeat(1, K, 1)
代码描述A.unsqueze(1)A[M,N]转换为[M,1,N]。重复(1,K,1)沿第二维度重复张量K次。

提供重复功能

导入einops
重复(x,'mn->mkn',k=k)

repeat
可以按任意顺序添加任意数量的轴,同时重新排列现有轴。

可能。如果您包含您正在使用的实际代码,这将非常有用