عندما أقوم بإنشاء طبقة Conv وأقوم بتمرير الحشو كعوامة عن طريق الخطأ ، أحصل على رسالة خطأ محيرة ، مما يجعل من الصعب تصحيح الأخطاء. أيضًا ، يظهر الخطأ عندما أقوم بتمريرة إلى الأمام.
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
رسالة الخطأ هي "RuntimeError: الوسيطة 1 يجب أن تكون tuple من int ، وليس tuple"
للتوضيح ، أعتقد أنه قد يكون من المفيد أن يتم تحديث RuntimeError ليشمل نوع المجموعة غير الصحيحة ، لذلك من الواضح أن النوع من المتوقع أن يكون 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
تم طرح رسالة الخطأ هذه بواسطة TupleParser
، وعند هذه النقطة لا تعرف المعلمة التي يتم تحليلها ولكن فقط فهرس المعلمة (في قائمة args).
نظرًا لأن المحلل اللغوي tuple يُستخدم فقط لتحليل المعلمات إلى autograd.functions.*
يمكننا توسيع وظائف TupleParser::parse
لتأخذ أيضًا اسم المعلمة حتى يتمكن من تمريرها إلى TupleParser::invalid_type
إلى رمي خطأ أيهما أكثر وضوحا؟
أو يمكننا فقط إضافة هذه الشيكات على مستوى بيثون؟
apaszkesoumith يسعدني إرسال العلاقات العامة ، إذا سمحت لي بمعرفة الطريقة التي تفضلها / بديل.
إضافة أسماء البارامترات إلى المحلل اللغوي tuple تبدو جيدة بالنسبة لي