【发布时间】:2020-03-19 01:52:02
【问题描述】:
我很不确定这是否正确。真的很难过,我找不到很多关于如何参数化 NN 的好例子。
您如何看待这两个班级的这种辍学方式。首先,我正在编写原始类:
class NeuralNet(nn.Module):
def __init__(self, input_size, hidden_size, num_classes, p = dropout):
super(NeuralNet, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, hidden_size)
self.fc3 = nn.Linear(hidden_size, num_classes)
def forward(self, x):
out = F.relu(self.fc1(x))
out = F.relu(self.fc2(out))
out = self.fc3(out)
return out
然后在这里,我发现了两种不同的写东西的方式,我不知道如何区分。第一个使用:
self.drop_layer = nn.Dropout(p=p)
而第二个:
self.dropout = nn.Dropout(p)
这是我的结果:
class NeuralNet(nn.Module):
def __init__(self, input_size, hidden_size, num_classes, p = dropout):
super(NeuralNet, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, hidden_size)
self.fc3 = nn.Linear(hidden_size, num_classes)
self.drop_layer = nn.Dropout(p=p)
def forward(self, x):
out = F.relu(self.fc1(x))
out = F.relu(self.fc2(out))
out = self.fc3(out)
return out
class NeuralNet(nn.Module):
def __init__(self, input_size, hidden_size, num_classes, p = dropout):
super(NeuralNet, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, hidden_size)
self.fc3 = nn.Linear(hidden_size, num_classes)
self.dropout = nn.Dropout(p)
def forward(self, x):
out = F.relu(self.fc1(x))
out = F.relu(self.fc2(out))
out = self.fc3(out)
return out
如果不是如何改进它,这是否可行,它是否给了我我期望的结果,这意味着创建一个神经网络,我可以在其中丢弃一些神经元。 重要的细节,我只想丢掉第二层神经网络,其余的不碰!
【问题讨论】:
-
我很高兴看到这么多关于这个问题的观点,如果你喜欢我的问题,请点个赞!我正在努力赚取积分
标签: python machine-learning deep-learning neural-network pytorch