pytorch-解决过拟合之动量与学习率衰减

目录

  • [1. momentum动量](#1. momentum动量)
  • [2. pytorch增加momentum](#2. pytorch增加momentum)
  • [3. 学习率衰减](#3. 学习率衰减)
  • [4. 学习率衰减的方式](#4. 学习率衰减的方式)
    • [4.1 loss连续几次无改善衰减](#4.1 loss连续几次无改善衰减)
  • [4.2 步进式衰减](#4.2 步进式衰减)

1. momentum动量

下图给出了梯度公式和增加了动量的梯度公式,β z k z^k zk其中的 z k z^k zk就是上次的梯度,而β决定了 w k + 1 w^{k+1} wk+1更偏向于上次梯度还是本次梯度。也就是说梯度增加了动量后,梯度更新要同时考虑上次的惯性和本次的梯度。

未加动量

加了动量

从两幅图可以看出加了动量比未加动量要平滑的多,未加动量很难找到全局极小值,而加了动量后找到全局极小值的概率要大的多。

2. pytorch增加momentum

如图中SGD优化器增加momentum参数,而Adam优化器是不支持输入动量参数的

3. 学习率衰减

下图为三种学习率模型曲线的不同表现,学习率太低训练比较慢,比如本来4天训完,结果可能10天才能训完,学习率太高loss震荡比较厉害很难找到极小值。

所谓学习率衰减就是开始使用较大的学习率,之后使用一定的策略使学习率不断减小,比如:有60k数据每训练10k学习率减小1/2

4. 学习率衰减的方式

4.1 loss连续几次无改善衰减

torch.optim.lr_scheduler.ReduceLROnPlateau函数的功能是,当loss在patience个连续epoch后没有改善时,就减小学习率factor倍

python 复制代码
CLASS torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08, verbose='deprecated')

optimizer-优化器

mode-min或max,min:当度量的量停止减小时,减小学习率,max:当度量的量停止增大时,减小学习率,默认min

factor-每次减少倍率

4.2 步进式衰减

比如:每30k衰减0.1

相关推荐
阿正的梦工坊4 小时前
深入理解 PyTorch 中的 unsqueeze 操作
人工智能·pytorch·python
技术小黑10 小时前
CNN算法实战系列03 | DenseNet121算法实战与解析
pytorch·深度学习·算法·cnn
keineahnung234516 小时前
為什麼要有 eval_is_non_overlapping_and_dense?PyTorch 包裝層與調用端解析
人工智能·pytorch·python·深度学习
m0_3722570216 小时前
parse_model 函数的收尾部分,负责将计算好的参数实例化为真实的 PyTorch 层,并完成元数据的绑定和通道账本的更新
人工智能·pytorch·python
心疼你的一切16 小时前
PyTorch实战:手写数字识别神经网络
人工智能·pytorch·深度学习·神经网络·机器学习
行者-全栈开发18 小时前
【AI时空分析】基于 GNN 的城市交通流量预测:图神经网络在智慧交通中的实战应用
pytorch·深度学习·图神经网络·智慧交通·交通流量预测·时空建模·geometric
m0_6174939419 小时前
解决 PyTorch 报错:RuntimeError: CUDA error: an illegal instruction was encountered
人工智能·pytorch·python
消晨消晨2 天前
Pytorch初上手——Dataset自定义数据集与Dataloader数据加载器
人工智能·pytorch·python
kcuwu.2 天前
(多代码实现版)PyTorch神经网络入门博客
人工智能·pytorch·神经网络
keineahnung23452 天前
PyTorch SymNode 的 _is_contiguous 從何而來?──sizes_strides_impl 實作詳解
人工智能·pytorch·python·深度学习