自学内容网 自学内容网

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

问题描述:

如下图,在使用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

原文地址:https://blog.csdn.net/qq_52360069/article/details/140534212

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!