#python #pytorch
Вопрос:
Я хочу добавить два тензора PyTorch вместе, например, пусть
a = tensor([[1., 1., 2.],
[1., 1., 2.],
[1., 1., 2.],
[1., 1., 2.],
[1., 1., 2.],
[1., 1., 2.]])
b = tensor([[4., 5., 6., 7., 8., 9.],
[4., 5., 6., 7., 8., 9.],
[4., 5., 6., 7., 8., 9.],
[4., 5., 6., 7., 8., 9.],
[4., 5., 6., 7., 8., 9.],
[4., 5., 6., 7., 8., 9.]])
И я хотел бы, чтобы результирующий тензор c
был:
c = tensor([[5., 6., 8., 8., 9., 11.],
[5., 6., 8., 8., 9., 11.],
[5., 6., 8., 8., 9., 11.],
[5., 6., 8., 8., 9., 11.],
[5., 6., 8., 8., 9., 11.],
[5., 6., 8., 8., 9., 11.]])
Примечание: b.shape[1]
всегда кратно a.shape[1]
.
есть ли лучший способ, чем решение, приведенное ниже?
fin = torch.Tensor()
for i in range(int(b.shape[1]/a.shape[1])):
target = b[:,batch*i:batch*(i 1)]
temp = torch.add(target, a)
fin = torch.cat([fin, temp], dim =1)
c = fin
Ответ №1:
Вы можете повторить столбцы a
, чтобы они соответствовали форме b
с torch.Tensor.repeat
, а затем добавить полученный тензор в b
:
>>> b a.repeat(1, b.size(1)//a.size(1))
tensor([[ 5., 6., 8., 8., 9., 11.],
[ 5., 6., 8., 8., 9., 11.],
[ 5., 6., 8., 8., 9., 11.],
[ 5., 6., 8., 8., 9., 11.],
[ 5., 6., 8., 8., 9., 11.],
[ 5., 6., 8., 8., 9., 11.]])
Комментарии:
1. ух ты. какое простое решение