pytorch学习率设置——optimizer.param_groups、对不同层设置学习率、动态调整学习率。

这篇具有很好参考价值的文章主要介绍了pytorch学习率设置——optimizer.param_groups、对不同层设置学习率、动态调整学习率。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

pytorch优化器——add_param_group()介绍及示例、Yolov7 优化器代码示例
pytorch学习率设置——optimizer.param_groups、对不同层设置学习率、动态调整学习率
PyTorch学习——关于tensor、Variable、nn.Parameter()、叶子节点、非叶子节点、detach()函数、查看网络层参数
PyTorch model 返回函数总结——model.state_dict(),model.modules(),model.children(),model.parameters()
PyTorch模型参数初始化(weights_init)——torch.nn.init、加载预权重



前言

我的需求:我需要在yolov7中更改其中一层的学习率,但yolov7的学习率是随着eporch的变化动态变化的。


1、关于optimizer.param_groups

“param_groups” 是 Pytorch 中优化器 Optimizer 的一个属性,它是一个列表,其中的每个元素都是一个字典,表示优化的参数组。每个字典都包含了一组参数的各种信息,如当前的学习率、动量等。这个属性可以用来获取优化器中当前管理的参数组的信息,也可以用来修改优化器的参数设置。
param_groups中的一些参数介绍:
[‘param’,‘lr’,‘momentum’,‘dampening’,‘weight_decay’,‘nesterov’]
params(iterable)—待优化参数w、b 或者定义了参数组的dict
lr(float,可选)—学习率
momentum(float,可选,默认0)—动量因子
weight_decay(float,可选,默认0)—权重衰减
dampening (float, 可选) – 动量的抑制因子(默认:0)
nesterov (bool, 可选) – 使用Nesterov动量(默认:False)

2、设置学习率

查看优化器完整参数:

print(optimizer.state_dict()["param_groups"])

查看学习率:

print("Lr:{}".format(optimizer.state_dict()['param_groups'][0]['lr']))

以下是我测试的网络模型:

class resnet18(torch.nn.Module):
    def __init__(self):
        super(resnet18, self).__init__()
        self.block1 = torch.nn.Sequential(
            torch.nn.Conv2d(1, 10, 5),
            torch.nn.MaxPool2d(2),
            torch.nn.ReLU(True),
            torch.nn.BatchNorm2d(10),
        )
        self.block2 = torch.nn.Sequential(
            torch.nn.Conv2d(10, 20, 5),
            torch.nn.MaxPool2d(2),
            torch.nn.ReLU(True),
            torch.nn.BatchNorm2d(20),
        )
        self.fc = torch.nn.Sequential(
            torch.nn.Flatten(),
            torch.nn.Linear(320, 10)
        )
    def forward(self, x):
        x = self.block1(x)
        x = self.block2(x)
        x = self.fc(x)
        return x
    
model = resnet18()

设置优化器、学习率:

optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.5)

对网络的不同块设置学习率:文章来源地址https://www.toymoban.com/news/detail-443785.html

optimizer = torch.optim.SGD([
        {
   "params":model.block1.parameters()},
        {
   "params":model.block2.parameters(),"lr":0.08},
        {
   "params":model.fc.parameters(),"lr":0.09},],
        lr=0.1, #默认参数
    )

到了这里,关于pytorch学习率设置——optimizer.param_groups、对不同层设置学习率、动态调整学习率。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Pytorch反向传播——optimizer.zero_grad(), loss.backward(), optimizer.step() 作用

    在 PyTorch 中,optimizer.zero_grad() 用于清空优化器中的梯度。通常,在进行一次反向传播计算之前,我们需要先清空优化器中的梯度。这是因为 PyTorch 默认会在反向传播时累加梯度,而不是覆盖之前的梯度,因此我们需要先清空梯度,再进行反向传播计算。 具体来说,optimizer.

    2024年02月11日
    浏览(8)
  • PyTorch翻译官网教程7-OPTIMIZING MODEL PARAMETERS

    Optimizing Model Parameters — PyTorch Tutorials 2.0.1+cu117 documentation 现在我们有了一个模型和数据,是时候通过优化我们的数据参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型对输出进行预测,计算猜测中的误差(损失),收集误差相对于其参数的导

    2024年02月16日
    浏览(13)
  • 【AI】Pytorch 系列:学习率设置

    a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing。 b. 自适应调整:自适应调整学习率 ReduceLROnPlateau。 c. 自定义调整:自定义调整学习率 LambdaLR。

    2024年02月02日
    浏览(9)
  • 【PyTorch】6.Learn about the optimization loop 了解优化循环

    现在我们有了模型和数据,是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型都会对输出进行猜测,计算其猜测中的误差( 损失 ),收集相对于其参数的导数的误差(如我们在上一节中看到的),并使用梯度下

    2024年01月23日
    浏览(14)
  • 小白学Pytorch系列--Torch.optim API Base class(1)

    小白学Pytorch系列--Torch.optim API Base class(1)

    torch.optim是一个实现各种优化算法的包。大多数常用的方法都已得到支持,而且接口足够通用,因此将来还可以轻松集成更复杂的方法。 使用手torch.optim您必须构造一个优化器对象,该对象将保存当前状态,并将根据计算出的梯度更新参数。 要构造一个优化器,你必须给它一

    2023年04月13日
    浏览(9)
  • tensorflow中tf.keras.optimizers.Adam如何设置参数

    在 TensorFlow 中使用 tf.keras.optimizers.Adam 优化器时,可以使用其可选的参数来调整其性能。常用的参数包括: learning_rate:float类型,表示学习率 beta_1: float类型, 动量参数,一般设置为0.9 beta_2: float类型, 动量参数,一般设置为0.999 epsilon: float类型, 用于防止除零错误,一般设置为

    2024年02月13日
    浏览(17)
  • CST 优化器设置 Optimizer-Settings 使用cst自动优化参数

    CST 优化器设置 Optimizer-Settings 使用cst自动优化参数

    优化器位于simulation选项中的optimizer按钮,点击即可进入优化器设置。 进入优化器后会看到如图所示的选项卡 在Simulation type中可以选择在求解器求解时就进行优化或者利用后处理数据进行优化 在对话框中一共有三个属性页(settings goals info)用于优化设置,先来看setting。 2.

    2024年02月01日
    浏览(28)
  • pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...

    pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...

    nn.Conv2d 需要的输入张量格式为 (batch_size, channels, height, width),但您的示例输入张量 x 是 (batch_size, height, width, channels)。因此,需要对输入张量进行转置。 注意, TensorFlow使用\\\"NHWC\\\"(批次、高度、宽度、通道)格式,而PyTorch使用\\\"NCHW\\\"(批次、通道、高度、宽度)格式 在pytorch中

    2024年02月10日
    浏览(13)
  • 【机器学习】随机种子Random Seed介绍(在Python、Pytorch、TensorFlow中的设置代码汇总)

    Random seed(随机种子) 是在生成随机数时使用的起始点。它用于控制随机数生成器产生随机数的序列。设置了随机种子后,每次生成的随机数序列将是确定性的,这意味着可以在不同的运行中获得相同的随机数序列,从而使实验可复现。 在机器学习中,确保实验的可复现性是

    2024年02月05日
    浏览(12)
  • 深度学习——优化器Optimizer

    深度学习——优化器Optimizer

    2024年02月16日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包