解决TypeError: __init__() takes 1 positional argument but 2 were given

avatar
作者
筋斗云
阅读量:2

问题描述:

如下图,在使用torch.nn.Sigmoid非线性激活时报错

源代码:

class testrelu(nn.Module):     def __init__(self):         super().__init__()         self.sigmoid = Sigmoid()      def forward(self, input):         output = self.sigmoid(input)         return output  writer = SummaryWriter("./logs") dataset = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor(),                                        download=True) dataloader = DataLoader(dataset, batch_size=64) step = 0 for data in dataloader:     img, target = data     writer.add_images("input_ReLU", img, step)     output = testrelu(img)     writer.add_images("output_ReLU", output, step)     step = step + 1  writer.close() 

testrelu 类的 __init__ 方法没有接收任何参数,但是在创建类的实例时,尝试传递了一个参数。这是导致 TypeError 的原因。

问题解决:

要解决这个问题,需要确保在创建 testrelu 类的实例时不传递任何参数。以下是修改后的代码:

tr = testrelu() for data in dataloader:     img, target = data     writer.add_images("input_ReLU", img, step)     output = tr(img)     writer.add_images("output_ReLU", output, step)     step = step + 1 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!