Pytorch: Mensagem de erro confusa quando o preenchimento é definido como flutuante em nn.Conv1d

Criado em 16 mai. 2017  ·  3Comentários  ·  Fonte: pytorch/pytorch

Quando crio uma camada Conv e passo o preenchimento como float por engano, recebo uma mensagem de erro confusa, o que dificulta a depuração. Além disso, o erro é lançado quando estou fazendo o passe para frente.

self.cnn = nn.Conv1d(in_channels=self.input_size, out_channels=self.num_filters,kernel_size=kw_l,padding=1.0)
self.cnn(inp)  # error is thrown in this line

A mensagem de erro é "RuntimeError: argumento 1 deve ser tupla de int, não tupla"

Todos 3 comentários

Para esclarecer, acho que pode ser útil se o RuntimeError for atualizado para incluir o tipo da tupla incorreta, então fica claro que o tipo deve ser um int.

import torch
import torch.nn as nn
from torch.autograd import Variable
input = Variable(torch.randn(1, 1, 10))
output = nn.Conv1d(1, 1, 3, padding=1)(input)  # fine
output = nn.Conv1d(1, 1, 3, padding=1.0)(input)  # error

Essa mensagem de erro é lançada pelo TupleParser , nesse ponto ele não sabe qual parâmetro está analisando, mas apenas o índice do parâmetro (na lista de argumentos).

Como o analisador de tupla é usado apenas para analisar parâmetros para autograd.functions.* , poderíamos estender as funções TupleParser::parse para também receber o nome do parâmetro para que ele possa passá-lo para TupleParser::invalid_type para lançar um erro que é mais significativo?

Ou podemos apenas adicionar essas verificações de tipo no nível do python?

@apaszke @soumith Fico feliz em enviar um PR, se você me informar qual método você prefere/alternativa.

adicionar nomes de parâmetros ao analisador de tuplas parece bom para mim

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