Объединение двух тензоров в Pytorch - PullRequest
0 голосов
/ 28 ноября 2018
RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 2. Got 32 and 71 in dimension 0 at /pytorch/aten/src/THC/generic/THCTensorMath.cu:87

У меня есть тензор формы [71 32 1].

Я хочу сделать его формы [100 32 1], добавив нулевые векторы.

Я попытался объединить вектор заполнениянулей формы [29 32 1].Я получаю ошибку выше.

Я пытаюсь с вектором заполнения нулей формы [29 32 1], я все еще получаю ошибку.

Как я могу создать требуемый тензор?

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы помочь вам лучше, вам нужно опубликовать код , который вызвал ошибку, без нее мы просто догадываемся здесь ...

Догадываясь из полученного сообщения об ошибке:

1.

Sizes of tensors must match except in dimension 2

pytorch пытается объединить по второму измерению, тогда как вы пытаетесь объединить по первому.

2.

Got 32 and 71 in dimension 0

Кажется, что размеры тензора, который вы хотите объединить, не соответствуют вашим ожиданиям, у вас есть размер с размером (72, ...), а у другого - (32, ...).
Вам также необходимо это проверить.

Рабочий код

Вот пример concat

import torch

x = torch.rand((71, 32, 1))
# x.shape = torch.Size([71, 32, 1])
px = torch.cat((torch.zeros(29, 32, 1, dtype=x.dtype, device=x.device), x), dim=0)
# px.shape = torch.Size([100, 32, 1])

В качестве альтернативы вы можете использовать functional.pad:

from torch.nn import functional as F

px = F.pad(x, (0, 0, 0, 0, 29, 0))
...