我有两个火炬张量。一个形状为[64, 4, 300]
,另一个形状为[64, 300]
。如何连接这两个张量以获得[64, 5, 300]
形状的合成张量。我知道用于此的tensor.cat
函数,但是为了使用该函数,我需要重塑第二张量以匹配张量的维数。我听说不应对张量进行整形,因为它可能会弄乱张量中的数据。我该如何进行串联?
我已经尝试过重塑,但是接下来的部分使我对这种重塑更加怀疑。
a = torch.rand(64,300)
a1 = a.reshape(64,1,300)
list(a1[0]) == list(a)
Out[32]: False
答案 0 :(得分:3)
您必须在第一个维度上使用torch.cat
,并在第一个维度上使用unsqueeze
,如下所示:
import torch
first = torch.randn(64, 4, 300)
second = torch.randn(64, 300)
torch.cat((first, second.unsqueeze(dim=1)), dim=1)
# Shape: [64, 5, 300]
它不会弄乱您的数据,只会添加表面的1
维(reshape
不会纠正,反之亦然)。