如何在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
可以按任意顺序添加任意数量的轴,同时重新排列现有轴。可能。如果您包含您正在使用的实际代码,这将非常有用