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
Acabo de encontrar un problema similar al usar datos con forma (tamaño de lote, altura, peso), se agregó 1 dimensión en la posición 1 y se solucionó el problema. PD. Estoy usando in_channels = 1.
El error ocurre porque la llamada a view4d
en torch/csrc/autograd/functions/convolution.cpp
espera que el tensor de peso también sea 3D.
Sin embargo, la entrada (3D) se convertirá en un tensor 4D con forma (3, 10, 1, 20), incluso si no intentamos descomprimir el tensor de peso, los tamaños no coincidirán.
¿Quizás deberíamos agregar un cheque en el nivel de Python (en nn.functional.conv2d
) para aumentar si input.dim() != 4
?
@soumith si estás contento con esto, puedo enviar un PR
¡sí! muy feliz con esto manda un RP :)
Comentario más útil
¡sí! muy feliz con esto manda un RP :)