本文共 988 字,大约阅读时间需要 3 分钟。
1. 神门是优化器
pytorch的优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签
梯度下降 参考 : https://blog.csdn.net/weixin_40170902/article/details/80092628
导数:函数在指定坐标轴上的变化率
方向导数:指定方向上的变化率
梯度:一个向量,方向为方向导数取得最大值的方向
2. optimizer的属性
• de faul ts:优化器超参数
• s ta te:参数的缓存,如mom en tum的缓存
• pa rams_g roups:管理的参数组
• _s tep_coun t:记录更新次数,学习率调整中使用
3. optimizer的方法
pytorch特性:张量梯度不自动清零
• zero_grad():清空所管理参数的梯度
• step():执行一步更新
• add_param_group():添加参数组
• state_dict():获取优化器当前状态信息字典
• load_state_dict() :加载状态信息字典
4. learning rate 学习率
梯度下降: 𝒘𝒊+𝟏 = 𝒘𝒊 − 𝒈(𝒘𝒊 ) 𝒘𝒊+𝟏 = 𝒘𝒊 − LR * 𝒈(𝒘𝒊)
学习率(learning rate)控制更新的步伐
使用较小的学习率可以让模型收敛,较大会导致梯度爆炸
5. momentum动量
6. torch.optim.SGD
主要参数:
• params:管理的参数组
• lr:初始学习率
• momentum:动量系数,贝塔
• weight_decay:L2正则化系数
• nesterov:是否采用NAG
7. pytorch的十种优化器
- optim.SGD:随机梯度下降法
- optim.Adagrad:自适应学习率梯度下降法
- optim.RMSprop: Adagrad的改进
- optim.Adadelta: Adagrad的改进
- optim.Adam:RMSprop结合Momentum
- optim.Adamax:Adam增加学习率上限
- optim.SparseAdam:稀疏版的Adam
- optim.ASGD:随机平均梯度下降
- optim.Rprop:弹性反向传播
- optim.LBFGS:BFGS的改进