pytorch学习之过拟合及优化trick

过拟合及优化trick

  • 数据分配
  • 交叉验证
  • 正则化
  • 动量(惯性)、学习率衰减
  • dropout

数据分配

  • 我们一般会有train(训练集),val(验证集),test(测试集)。
  • 训练集和验证集再训练时使用,验证集做模型参数的挑选,确保模型不会过拟合
  • 测试集在训练完毕后测试训练结果

交叉验证

  • pytorch中之支持把数据集划分为 train和test 两种(通过参数train=true、false),因此需要 val 验证集 时,一般通过 random_split() 函数分割
    pytorch学习之过拟合及优化trick_第1张图片
    pytorch学习之过拟合及优化trick_第2张图片

正则化

  • 正则化用于避免过拟合
  • 有L1正则化(损失函数上加一个一范数)
    在这里插入图片描述
  • L2正则化(损失函数上加一个二范数)
    pytorch学习之过拟合及优化trick_第3张图片
  • 在pytorch中,对于L2正则化,可以直接设置参数 weight_decay 的值,作为 λ 的值
    pytorch学习之过拟合及优化trick_第4张图片
  • 对于L1正则化,则需使用下例的方法,直接写出
    pytorch学习之过拟合及优化trick_第5张图片

动量(惯性)、学习率衰减

  • 一般需要加动量只需要像下例这样,增加一个momentum参数即可,但是Adam优化器没有这个参数,因为其内置了类似该参数的算法。
    pytorch学习之过拟合及优化trick_第6张图片
  • 可以使用 ReduceLROnPlateau()函数,监听 loss ,当运行 ‘min’epochloss都没减少,就会自动减少 learningrate值
  • pytorch学习之过拟合及优化trick_第7张图片
  • 也可以 stepLR()函数,固定几个 epoch少固定的 lerarningrate 值
    pytorch学习之过拟合及优化trick_第8张图片

dropout

  • 去掉一些点特征点
  • 在pytorch中实现非常简单
    pytorch学习之过拟合及优化trick_第9张图片
  • 但要注意,在pytorchDropout的参数是保留 (1-p)的概率,而tensorflow中的参数是保留的概率
    pytorch学习之过拟合及优化trick_第10张图片
  • 另外在test时,要用 evaldropout去掉,提高test结果pytorch学习之过拟合及优化trick_第11张图片

你可能感兴趣的:(pytorch,学习,深度学习)