import torch
import torch.nn as nn
from torch.autograd import Variable
m = Variable(torch.randn(3, 10, 20))
nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3)(m)
Traceback (most recent call last):
File "too.py", line 6, in <module>
nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3)(m)
File "/home/soumith/code/pytorch/torch/nn/modules/module.py", line 206, in __call__
result = self.forward(*input, **kwargs)
File "/home/soumith/code/pytorch/torch/nn/modules/conv.py", line 237, in forward
self.padding, self.dilation, self.groups)
File "/home/soumith/code/pytorch/torch/nn/functional.py", line 43, in conv2d
return f(input, weight, bias)
RuntimeError: expected 3D tensor
habe gerade ein ähnliches Problem bei der Verwendung von Daten mit Form (batch_size, Höhe, Gewicht) festgestellt, 1 Dimension an Position 1 hinzugefügt und Problem sortiert. PS. Ich verwende in_channels = 1.
Der Fehler tritt auf, weil der Aufruf von view4d
in torch/csrc/autograd/functions/convolution.cpp
erwartet, dass der Gewichtstensor ebenfalls 3D ist.
Die (3D)-Eingabe wird jedoch in einen 4D-Tensor mit der Form (3, 10, 1, 20) konvertiert, selbst wenn wir nicht versuchen, den Gewichtstensor aufzuheben, werden die Größen nicht übereinstimmen.
Vielleicht sollten wir eine Überprüfung auf Python-Ebene (in nn.functional.conv2d
) hinzufügen, um zu erhöhen, ob input.dim() != 4
?
@soumith wenn du damit zufrieden bist, kann ich dir eine PR schicken
Jawohl! sehr zufrieden damit. PN schicken :)
Hilfreichster Kommentar
Jawohl! sehr zufrieden damit. PN schicken :)