Pytorch: Verwirrende Fehlermeldung, wenn Padding in nn.Conv1d auf Float gesetzt ist

Erstellt am 16. Mai 2017  ·  3Kommentare  ·  Quelle: pytorch/pytorch

Wenn ich eine Conv-Ebene erstelle und das Padding versehentlich als Float übergebe, erhalte ich eine verwirrende Fehlermeldung, die das Debuggen erschwert. Außerdem wird der Fehler ausgelöst, wenn ich den Vorwärtspass mache.

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

Die Fehlermeldung lautet „RuntimeError: argument 1 must be tuple of int, not tuple“

Alle 3 Kommentare

Zur Verdeutlichung denke ich, dass es hilfreich sein könnte, wenn der RuntimeError so aktualisiert wird, dass er den Typ des falschen Tupels enthält, sodass klar ist, dass der Typ voraussichtlich ein Int ist.

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

Diese Fehlermeldung wird von TupleParser ausgegeben, an diesem Punkt weiß es nicht, welchen Parameter es analysiert, sondern nur den Index des Parameters (in der Argumentliste).

Da der Tupel-Parser nur zum Parsen von Parametern zu autograd.functions.* verwendet wird, könnten wir die TupleParser::parse -Funktionen so erweitern, dass sie auch den Parameternamen aufnehmen, damit er ihn an TupleParser::invalid_type weitergeben kann einen Fehler werfen, der sinnvoller ist?

Oder könnten wir diese Typprüfungen einfach auf Python-Ebene hinzufügen?

@apaszke @soumith Ich sende gerne eine PR, wenn Sie mir mitteilen, welche Methode Sie bevorzugen / eine Alternative.

Das Hinzufügen von Parameternamen zum Tupel-Parser klingt für mich gut

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen