web-dev-qa-db-ja.com

Pytorchで2つのテンソルを連結する

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]、それでもエラーが発生します。

必要なテンソルを作成するにはどうすればよいですか?

4
tstseby

あなたをよりよく助けるために、あなたはエラーを引き起こした code を投稿する必要があります、それなしで私たちはここで推測しています...

あなたが得たエラーメッセージから推測:

1。

Sizes of tensors must match except in dimension 2

pytorchは2次元に沿って連結しようとしますが、1次元に沿って連結しようとします。

2。

Got 32 and 71 in dimension 0

連結したいテンソルの次元が期待どおりではないようです。サイズが(72, ...)で、もう一方が(32, ...)です。
これも確認する必要があります。

作業コード

これが連結の例です

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))
12
Shai