Pytorch: Message d'erreur confus lorsque le rembourrage est défini pour flotter dans nn.Conv1d

Créé le 16 mai 2017  ·  3Commentaires  ·  Source: pytorch/pytorch

Lorsque je crée une couche Conv et que je transmets le rembourrage comme flottant par erreur, je reçois un message d'erreur déroutant, ce qui rend le débogage plus difficile. De plus, l'erreur est générée lorsque je fais la passe avant.

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

Le message d'erreur est "RuntimeError: l'argument 1 doit être un tuple d'entier, pas un tuple"

Tous les 3 commentaires

Pour clarifier, je pense qu'il pourrait être utile que RuntimeError soit mis à jour pour inclure le type du tuple incorrect, il est donc clair que le type devrait être un 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

Ce message d'erreur est émis par le TupleParser , à quel point il ne sait pas quel paramètre il analyse mais juste l'index du paramètre (dans la liste des arguments).

Comme l'analyseur de tuple n'est utilisé que pour analyser les paramètres à autograd.functions.* , nous pourrions étendre les fonctions TupleParser::parse pour prendre également le nom du paramètre afin qu'il puisse le transmettre à TupleParser::invalid_type pour jeter une erreur qui est plus significative?

Ou pourrions-nous simplement ajouter ces vérifications de type au niveau python ?

@apaszke @soumith Je suis heureux d'envoyer un PR, si vous me faites savoir quelle méthode vous préférez/une alternative.

ajouter des noms de paramètres à l'analyseur de tuple me semble bien

Cette page vous a été utile?
0 / 5 - 0 notes