Pytorch,TypeError:object()不带参数

Posted

技术标签:

【中文标题】Pytorch,TypeError:object()不带参数【英文标题】:Pytorch, TypeError: object() takes no parameters 【发布时间】:2017-10-02 13:16:30 【问题描述】:

这可能是一个初学者的问题,但是:使用 pytorch 运行图像分类器构建时,我收到此错误:

Traceback (most recent call last):
File "/pytorch/kanji_torch.py", line 47, in <module>
    network = Network()
  File "/pytorch/kanji_torch.py", line 113, in __init__
    self.conv1 = nn.Conv2d(1, 32, 5)
  File "/python3.5/site-packages/torch/nn/modules/conv.py", line 233, in __init__
    False, _pair(0), groups, bias)
  File "/python3.5/site-packages/torch/nn/modules/conv.py", line 32, in __init__
    out_channels, in_channels // groups, *kernel_size))
TypeError: object() takes no parameters

我这样定义网络类:

class Network(torch.nn.Module):
    def __init__(self):
        super(Network, self).__init__()
        self.conv1 = nn.Conv2d(1, 32, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(32, 64, 5)
        self.pool2 = nn.MaxPool2d(2, 2)
        self.conv3 = nn.Conv2d(64, 64, 5)
        self.pool2 = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(64 * 5 * 5, 512)
        self.fc2 = nn.Linear(512, 640)
        self.fc3 = nn.Linear(640, 3756)

很确定我正确导入了所有相关的 pytorch 库模块。 (将 torch.nn 导入为 nn 和 进口火炬)

对我做错了什么有任何想法吗?

谢谢!

【问题讨论】:

不,抱歉,这是一个错误,我已修复它 Traceback 似乎指向文件/pytorch/blitz.py(顺便说一句,我对/pytorch/.py 文件名很感兴趣)。在您粘贴的代码中,该类名为Network,但回溯涉及Net。你在粘贴代码之前更新过东西吗? 这对我来说太草率了。我有两个 scipts 有同样的问题。我把它们调了起来,以为我把所有的名字都改错了。现在草率已经被删掉了。谢谢 【参考方案1】:

当我运行代码时,您的 pytorch 版本可能有问题:

class Network(torch.nn.Module):
    def __init__(self):
        super(Network, self).__init__()
        self.conv1 = nn.Conv2d(1, 32, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(32, 64, 5)
        self.pool2 = nn.MaxPool2d(2, 2)
        self.conv3 = nn.Conv2d(64, 64, 5)
        self.pool2 = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(64 * 5 * 5, 512)
        self.fc2 = nn.Linear(512, 640)
        self.fc3 = nn.Linear(640, 3756)
print(network)

输出是:

Network (
  (conv1): Conv2d(1, 32, kernel_size=(5, 5), stride=(1, 1))
  (pool): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
  (conv2): Conv2d(32, 64, kernel_size=(5, 5), stride=(1, 1))
  (pool2): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
  (conv3): Conv2d(64, 64, kernel_size=(5, 5), stride=(1, 1))
  (fc1): Linear (1600 -> 512)
  (fc2): Linear (512 -> 640)
  (fc3): Linear (640 -> 3756)
)

我建议更新/重新安装 pytorch。

【讨论】:

成功了。谢谢!我对torch.Variable也有类似的问题,现在也解决了。

以上是关于Pytorch,TypeError:object()不带参数的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch - TypeError: forward() 接受 1 个位置参数,但给出了 2 个

PyTorch - 获取 'TypeError: pic 应该是 PIL Image 或 ndarray。得到 <class 'numpy.ndarray'>' 错误

Ray[tune] for pytorch TypeError: ray.cloudpickle.dumps

PyTorch BERT TypeError: forward() got an unexpected keyword argument 'labels'

TypeError: Object(...) 不是函数

TypeError: Object(…) 不是函数