0

最近我观察到很多时候,在定义神经网络时,我们为每一层定义了单独的 ReLU 对象。为什么我们不能在需要的地方使用相同的 ReLU 对象。

例如,不要这样写——

def __init__(self):
    self.fc1     = nn.Linear(784, 500)
    self.ReLU_1  = nn.ReLU()
    self.fc2     = nn.Linear(500, 300)
    self.ReLU_2  = nn.ReLU()
    
def forward(x):
    x = self.fc1(x)
    x = self.ReLU_1(x)
    x = self.fc2(x)
    x = self.ReLU_2(x)

为什么我们不能使用

def __init__(self):
    self.fc1    = nn.Linear(784, 500)
    self.ReLU   = nn.ReLU()
    self.fc2    = nn.Linear(500, 300)
    
def forward(x):
    x = self.fc1(x)
    x = self.ReLU(x)
    x = self.fc2(x)
    x = self.ReLU(x)

这是 PyTorch 特有的吗?

4

1 回答 1

0

我们可以这样做。第一个变体只是为了清楚起见。

于 2020-06-26T10:53:37.830 回答