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
vient de rencontrer un problème similaire en utilisant des données avec forme (taille_lot, taille, poids), ajouté 1 dimension à la position 1 et problème trié. PS. J'utilise in_channels = 1.
L'erreur se produit car l'appel à view4d
dans torch/csrc/autograd/functions/convolution.cpp
s'attend à ce que le tenseur de poids soit également 3D.
Cependant, l'entrée (3D) sera convertie en un tenseur 4D de forme (3, 10, 1, 20), même si nous n'essayons pas de desserrer le tenseur de poids, les tailles seront incompatibles.
Peut-être devrions-nous ajouter une vérification au niveau Python (dans nn.functional.conv2d
) pour lever if input.dim() != 4
?
@soumith si vous êtes satisfait de cela, je peux envoyer un PR
Oui! très heureux avec cela. envoyer un RP :)
Commentaire le plus utile
Oui! très heureux avec cela. envoyer un RP :)