web-dev-qa-db-fra.com

Concaténer deux tenseurs à Pytorch

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

J'ai un tenseur de forme [71 32 1].

Je veux le rendre de forme [100 32 1] en remplissant les vecteurs zéro.

J'ai essayé en concaténant un vecteur de remplissage de zéros de forme [29 32 1]. J'obtiens l'erreur ci-dessus.

J'essaie avec un vecteur de remplissage de zéros de forme [29 32 1], J'obtiens toujours une erreur.

Comment créer le tenseur requis?

4
tstseby

Afin de mieux vous aider, vous devez poster le code qui a causé l'erreur, sans cela nous devinons juste ici ...

En devinant le message d'erreur que vous avez obtenu:

1.

Sizes of tensors must match except in dimension 2

pytorch essaie de concaténer le long de la 2e dimension, tandis que vous essayez de concaténer le long de la première.

2.

Got 32 and 71 in dimension 0

Il semble que les dimensions du tenseur que vous souhaitez concaténer ne sont pas celles que vous attendez, vous en avez un de taille (72, ...) tandis que l'autre est (32, ...).
Vous devez également vérifier cela.

Code de travail

Voici un exemple de 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])

Vous pouvez également utiliser functional.pad :

from torch.nn import functional as F

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