Ketika saya membuat layer Conv dan melewatkan padding sebagai float secara tidak sengaja, saya mendapatkan pesan kesalahan yang membingungkan, yang membuatnya lebih sulit untuk di-debug. Juga, kesalahan dilemparkan ketika saya melakukan umpan maju.
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
Pesan kesalahannya adalah "RuntimeError: argumen 1 harus berupa tuple int, bukan tuple"
Untuk memperjelas, saya pikir mungkin akan membantu jika RuntimeError diperbarui untuk memasukkan jenis Tuple yang salah, jadi jelas bahwa jenisnya diharapkan menjadi 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
Pesan kesalahan ini dilemparkan oleh TupleParser
, di mana ia tidak tahu param mana yang diuraikan tetapi hanya indeks param (dalam daftar args).
Karena pengurai Tuple hanya digunakan untuk menguraikan param ke autograd.functions.*
, kami dapat memperluas fungsi TupleParser::parse
untuk juga mengambil nama param sehingga dapat meneruskannya ke TupleParser::invalid_type
ke melempar kesalahan mana yang lebih berarti?
Atau kita bisa menambahkan pemeriksaan tipe ini di level python?
@apaszke @soumith Saya senang mengirim PR, jika Anda memberi tahu saya metode mana yang Anda sukai/alternatif.
menambahkan nama param ke parser Tuple terdengar bagus untuk saya