问题描述
我正在查看此python类,并试图弄清为什么super函数具有任何参数。如果我的理解是正确的,在这种情况下,不带参数的super()会执行相同的工作。我说得对吗?
这是代码
class Net(torch.nn.Module):
def __init__(self,input_size,hidden_size):
super(Net,self).__init__()
self.input_size = input_size
self.hidden_size = hidden_size
self.fc1 = torch.nn.Linear(self.input_size,self.hidden_size)
self.relu = torch.nn.ReLU()
self.fc2 = torch.nn.Linear(self.hidden_size,1)
self.sigmoid = torch.nn.Sigmoid()
def forward(self,x):
hidden = self.fc1(x)
relu = self.relu(hidden)
output = self.fc2(relu)
output = self.sigmoid(output)
return output
解决方法
在Python 2中,参数不是可选的。在Python 3中,有一种特殊的编译器魔术来确定要忽略的参数。在Net.__init__
的上下文中,super()
等效于super(Net,self)
。