Pytorch torch.optim 模块 优化器
栏目:行业动态 发布时间:2024-04-29
分享到:
Pytorch模块优化器PyTorch中包含的优化器有:site:需要通过优化器学习(即:优化,或训练)的参数,一般通过传入每一个模型的一组学习参数被称为一个:学习速率,即每一epoch模型参数更新的程度:权重衰减WeightDecay其他的

Pytorch 模块 优化器

PyTorch 中包含的优化器有:site

  • :需要通过优化器学习(即:优化,或训练)的参数,一般通过 传入

    • 每一个模型的一组学习参数被称为一个
  • :学习速率,即每一 epoch 模型参数更新的程度

  • :权重衰减 Weight Decay

  • 其他的参数,则根据具体的优化器而有所不同

参数组:优化器的传入参数也可以是一个 list,每个元素为 dict 类型,被称为参数组。每个 dict 用于设置优化参数,key 值为优化器的传入参数

  • 在 list 外的参数,被称为全局参数,用于设置未指定参数的参数组

  • 多用于模型参数微调(Fine-Tuning),只更新部分学习参数

实例:传入参数组



:将优化器中所有待优化的 (传入优化器对象的 )的梯度归零

:执行一步优化(参数训练)过程

:添加参数组

:返回一个 dict ,包含优化器状态,以及每个参数组的具体信息

  • 包含 2 个 key 值: 和

  • :返回 list 类型,每个元素为 dict 类型,表示一个参数组的具体信息

    • :返回参数组学习参数索引

:从指定的 dict 加载参数组的具体信息

实例:



:返回 dict 类型,优化器的默认参数。默认参数不对优化器产生影响

:返回 list 类型,每个元素为一个 dict,表示一个参数组的参数信息

  • 与 类似,但是此方法能获取学习参数的具体数值,而不是索引

  • :返回 list 类型,每个元素为 类,即学习参数

实例:



优化没有提供 L1 或 L2 正则化方法,但是提供了 Weight Decay 方法,可以实现 L2 正则化的效果。对于随机梯度下降法(SGD),Weight Decay 方法与 L2 正则化方法等价,但是,对于较为复杂的优化方法(比如 Adam)中,二者不完全等价(邱锡鹏,神经网络与深度学习)。

实例 1:网络模型训练实例,使用 方法


实例 2:使用梯度下降更新参数,使用 方法



训练部分学习参数,常用于模型微调(Fine-Tuning)


另外一种微调方法,将不需要改变的学习参数(或类)自动梯度关闭,即



PyTorch 中包含的学习速度策略有:site

通用参数

: 默认为 False;是否在每个 Epoch print 学习速率

使用 模块调整优化器的学习速率时,在定义优化器时,需要设置参数 ,表示初始的学习速率,同时 参数也不可忽略


通过 返回初始学习速率;通过 返回当前学习速率


参数: 每隔 epochs, 调整为 ,如:


实例: 设置



文中代码:Colab, GitHub

PyTorch 官方文档, torch.optim, site

邱锡鹏,第7.7节 网络正则化, 神经网络与深度学习,机械工业出版社, 2020, Github


平台注册入口