Pytorch: dar uma entrada 3d para Conv2d dá uma mensagem de erro ruim

Criado em 21 mai. 2017  ·  3Comentários  ·  Fonte: 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)

Comentários muito úteis

sim! muito feliz com isso. mande um PR :)

Todos 3 comentários

acabei de encontrar um problema semelhante usando dados com forma (tamanho_dolote, altura, peso), adicionei 1 dimensão na posição 1 e o problema foi classificado. PS. Estou usando in_channels = 1.

O erro ocorre porque a chamada para view4d em torch/csrc/autograd/functions/convolution.cpp espera que o tensor de peso também seja 3D.

No entanto, a entrada (3D) será convertida em um tensor 4D com forma (3, 10, 1, 20), mesmo se não tentarmos descomprimir o tensor de peso, os tamanhos serão incompatíveis.

Talvez devêssemos adicionar uma verificação no nível do Python (em nn.functional.conv2d ) para aumentar se input.dim() != 4 ?

@soumith se você estiver feliz com isso, posso enviar um PR

sim! muito feliz com isso. mande um PR :)

Esta página foi útil?
0 / 5 - 0 avaliações