尝试使用 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__
。
我最近开始学习使用 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__
。