Pytorch: 在 nn.Conv1d 中将填充设置为浮动时令人困惑的错误消息

创建于 2017-05-16  ·  3评论  ·  资料来源: pytorch/pytorch

当我创建一个 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 必须是 int 的元组,而不是元组”

所有3条评论

为了澄清,我认为如果更新 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 列表中)。

由于元组解析器仅用于将参数解析为autograd.functions.*我们可以扩展TupleParser::parse函数以也接受参数名称,以便它可以将其传递给TupleParser::invalid_type以抛出一个更有意义的错误?

或者我们可以在 python 级别添加这些类型检查?

@apaszke @soumith如果您让我知道您喜欢哪种方法/替代方法,我很乐意发送 PR。

向元组解析器添加参数名称对我来说听起来不错

此页面是否有帮助?
0 / 5 - 0 等级