为什么在神经网络类定义中使用多个 ReLU 对象?

Fra*_*ese 5 neural-network pytorch relu

最近我观察到,在定义神经网络时,我们很多时候为每一层定义单独的 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)

Run Code Online (Sandbox Code Playgroud)

为什么我们不能使用

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)

Run Code Online (Sandbox Code Playgroud)

这是 PyTorch 特有的东西吗?

rom*_*man 3

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