@[toc]
pytorch的优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签
- 基本属性
- defaults:优化器超参数
- state:参数的缓存,如momentum的缓存
- param_groups:管理的参数组(list)
-
_step_count:记录更新次数,学习率调整中使用
- 基本方法
- zero_grad():清空所管理参数的梯度,因为pytorch特性:张量梯度不自动清零
- step():执行一步更新
- add_param_group():添加参数组
- state_dict():获取有乎其当前状态信息字典
- load_state_dict():加载状态信息字典
梯度下降:
学习率:控制更新的步伐。
增加学习率之后的梯度下降公式为:动量(Momentum):结合当前梯度与上一次更新信息,用于当前更新
增加动量之后的梯度下降公式为:
其中
- optim.SGD
- 主要参数:
- params:管理的参数组(list)
- lr:初试学习率
- momentum:动量系数,贝塔
- weight_decay:L2正则化系数
- nesterov:是否采用NAG
- 主要参数:
- optim.SGD:随机梯度下降法
- optim.Adagrad:自适应学习率梯度下降法
- optim.RMSprop:Adagrad的改进
- optim.Adadelta:Adagrad的改进
- optim.Adam:RMSprop结合Momentum
- optim.Adamax:Adam增加学习率上限
- optim.SparseAdam:稀疏版Adam
- optim.ASGD:随机平均梯度下降
- optim.Rprop:弹性反向传播
10.optim.LBFGS:BFGS的改进
优化器的作用是管理并更新参数组,请构建一个SGD优化器,通过add_param_group方法添加三组参数,三组参数的学习率分别为 0.01, 0.02, 0.03, momentum分别为0.9, 0.8, 0.7,构建好之后,并打印优化器中的param_groups属性中的每一个元素的key和value(提示:param_groups是list,其每一个元素是一个字典)
执行结果: