神经网络中Dropout的理解
程序员文章站
2022-07-13 10:08:14
...
在写代码过程中遇到这样一个问题,之前训练了一个模型,保存了权重,有过拟合的迹象,我便在神经网络的一些层加上Dropout进行部分丢弃,但是在重新加载模型进行预测时,出现了预测错的离谱现象,即使Dropout的丢失率设置为0,也错的离谱。
解答:Dropout(0)!=没有Dropout()层
原始的代码,训练保存权重 0.pth
net_dropped = torch.nn.Sequential(
torch.nn.Linear(1, N_HIDDEN),
torch.nn.ReLU(),
torch.nn.Linear(N_HIDDEN, N_HIDDEN),
torch.nn.ReLU(),
torch.nn.Linear(N_HIDDEN, 1),
)
修改后的代码,加了Dropout层,即使将0.5改成0也不能等于原始的代码
net_dropped = torch.nn.Sequential(
torch.nn.Linear(1, N_HIDDEN),
torch.nn.Dropout(0.5), # drop 50% of the neuron
torch.nn.ReLU(),
torch.nn.Linear(N_HIDDEN, N_HIDDEN),
torch.nn.Dropout(0.5), # drop 50% of the neuron
torch.nn.ReLU(),
torch.nn.Linear(N_HIDDEN, 1),
)