尝试使用 PyTorch 构建 CNN 模型时出现错误“_init__() takes 1 positional argument but 2 were given”

Error "_init__() takes 1 positional argument but 2 were given" when trying to build a CNN model using PyTorch

我最近开始学习使用 PyTorch 编程。当我尝试为 FashionMNIST 数据集构建 CNN 模型时,我遇到了以下问题:

TypeError Traceback(最后一次调用) 在 () ----> 1 个模型 = CNN (K)

TypeError: init() 采用 1 个位置参数,但给出了 2 个

我已经阅读了类似问题的答案,但仍然无法解决我的问题。如果有人能在这方面帮助我,我将不胜感激。

代码如下:

train_dataset = torchvision.datasets.FashionMNIST (root = '.', train = True, transform = transforms.ToTensor (), download= True)
test_dataset = torchvision.datasets.FashionMNIST (root = '.', train= False, transform = transforms.ToTensor (), download = True)

K = len (set (train_dataset.targets.numpy ()))
class CNN (nn.Module):
  def __int__ (self, K):

    super (CNN, self).__int__ ()

    self.conv_layers = nn.Sequential (
    nn.Conv2d (in_channels= 1, out_channels= 32, kernel_size= 3, stride = 2),
    nn.ReLU (),
    nn.Conv2d (in_channels= 32, out_channels= 64, kernel_size= 3, stride = 2),
    nn.ReLU (),
    nn.Conv2d (in_channels= 64, out_channels= 128, kernel_size= 3, stride= 2),
    nn.ReLU ()
    )

    self.dense_layers = nn.Sequential (nn.Dropout (0.2),
                                   nn.Linear (128 * 2 * 2, 512),
                                   nn.ReLU (),
                                   nn.Dropout (0.2),
                                   nn.Linear (512, K)
                                   )
   def forward (self, x):
   out = self.conv_layers (x)
   out = out.view (out.size (0), -1)
   out = self.dense_layers (out)
   return out

                                   

您可以尝试删除 def forward(self, x): 行中的“self”,因为它已经在您的对象中...我不太确定,但似乎“self”参数之一不需要,因为您已经在 obj class.

你的初始化方法头部有一个拼写错误:它应该是 def __init__,而不是 def __int__