Pytorch处理过拟合——Dropout

原文地址

分类目录——Pytorch

  • 什么是过拟合

过拟合,简单讲就是对过度符合训练数据,比如二维空间中拟合出的一条曲线保证了所有的训练点都在曲线上,效果就像下图所示

Pytorch处理过拟合——Dropout_第1张图片

但是这并不一定是好的,这样训练出来的模型,只能说模型很好的符合了训练数据,并不代表模型就抓住了数据的变化趋势,在训练数据上,不一定就有好的表现。

在神经网络中,深度层次与多节点有其必要性,但是过多的节点就容易导致过拟合,Pytorch提供了解决Dropout()函数来防止多拟合

Dropout§函数的机制是在当前层计算时,随机舍去p(p属于[0,1))比例的节点数据,以此来减弱网络对某些数据的过度依赖

  • 关键代码
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),
)

应当注意Dropout非必须选项,而且具体drop多少还应该视具体的数据而定,需要根据具体情况进行调参

Dropout操作的理想情况是在训练数据上可能并不会达到较高的准确率,但在训练数据上会获得比不进行Dropout较好的效果(我图中所示的数据并没有到达这个效果。。)

  • 一个程序实例

  • 参考文献

    Dropout 缓解过拟合

    分类目录——Matplotlib

你可能感兴趣的:(Python,#,Pytorch)