добавление нулей в тензор по обоим измерениям - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть тензор t

1 2
3 4
5 6
7 8

И я бы хотел сделать это

0 0 0 0
0 1 2 0
0 3 4 0
0 5 6 0
0 7 8 0
0 0 0 0 

Я попытался составить с новым = torch.tensor ([0, 0, 0.0.]) Тензор четыре раза, но это не сработало.

t = torch.arange(8).reshape(1,4,2).float()
print(t)
new=torch.tensor([[0., 0., 0.,0.]])
print(new)
r = torch.stack([t,new])  # invalid argument 0: Tensors must have same number of dimensions: got 4 and 3
new=torch.tensor([[[0., 0., 0.,0.]]])
print(new)
r = torch.stack([t,new])  # invalid argument 0: Sizes of tensors must match except in dimension 0.

Я тоже попробовал кошку, которая тоже не работала.

1 Ответ

2 голосов
/ 19 сентября 2019

Вероятно, лучше сначала инициализировать массив нужной формы, а затем добавить данные с соответствующими индексами.

import torch

t = torch.arange(8).reshape(1,4,2).float()
x = torch.zeros((1, t.shape[1]+2, t.shape[2]+2))
x[:, 1:-1, 1:-1] = t

print(x)

С другой стороны, если вы просто хотите дополнить свой тензорнули (а не просто добавлять дополнительные нули куда-либо), вы можете использовать torch.nn.functional.pad:

import torch

t = torch.arange(8).reshape(1, 4, 2).float()
x = torch.nn.functional.pad(t, (1, 1, 1, 1))

print(x)
...