Pytorch: dar una entrada 3d a Conv2d da un mensaje de error incorrecto

Creado en 21 may. 2017  ·  3Comentarios  ·  Fuente: pytorch/pytorch

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
medium priority (this tag is deprecated)

Comentario más útil

¡sí! muy feliz con esto manda un RP :)

Todos 3 comentarios

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 :)

¿Fue útil esta página
0 / 5 - 0 calificaciones