Pytorch处理过拟合——Dropout

2022-09-23 07:59:21

原文地址

分类目录——Pytorch

  • 什么是过拟合

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

过拟合

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

在神经网络中,深度层次与多节点有其必要性,但是过多的节点就容易导致过拟合,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较好的效果(我图中所示的数据并没有到达这个效果。。)

  • 作者:BBJG_001
  • 原文链接:https://itdarcy.blog.csdn.net/article/details/104834094
    更新时间:2022-09-23 07:59:21