問題描述:
如下圖,在使用torch.nn.Sigmoid非線性激活時報錯
源代碼:
class testrelu(nn.Module):def __init__(self):super().__init__()self.sigmoid = Sigmoid()def forward(self, input):output = self.sigmoid(input)return outputwriter = 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 = datawriter.add_images("input_ReLU", img, step)
output = testrelu(img)writer.add_images("output_ReLU", output, step)step = step + 1writer.close()
testrelu
類的 __init__
方法沒有接收任何參數,但是在創建類的實例時,嘗試傳遞了一個參數。這是導致 TypeError
的原因。
問題解決:
要解決這個問題,需要確保在創建 testrelu
類的實例時不傳遞任何參數。以下是修改后的代碼:
tr = testrelu() for data in dataloader:img, target = datawriter.add_images("input_ReLU", img, step) output = tr(img)writer.add_images("output_ReLU", output, step)step = step + 1