首页 > 解决方案 > 为什么在神经网络类定义中使用多个 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)

为什么我们不能使用

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 特有的吗?

标签: neural-networkpytorchrelu

解决方案


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


推荐阅读