Существует более чистый способ использования .unsqueeze()
и torch.cat()
, который напрямую использует интерфейс PyTorch:
import torch
# create two sample vectors
inps = torch.randn([64, 161, 1])
d = torch.randn([64, 161])
# bring d into the same format, and then concatenate tensors
new_inps = torch.cat((inps, d.unsqueeze(2)), dim=-1)
print(new_inps.shape) # [64, 161, 2]
По сути, сжатие второго измерения уже приводит два тензора в один и тот же формы; Вы просто должны быть осторожны, чтобы выдавить правильное измерение. Точно так же конкатенация , к сожалению, названа иначе, чем функция с другим именем NumPy, но ведет себя так же. Обратите внимание, что вместо того, чтобы torch.cat
вычислил размер, предоставив dim=-1
, вы также можете явно указать размер для объединения, в этом случае заменив его на dim=2
.
Имейте в виду разница между объединением и суммированием , что полезно для аналогичных задач с тензорными измерениями.