iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >pytorch中优化器optimizer.param_groups用法的示例分析
  • 767
分享到

pytorch中优化器optimizer.param_groups用法的示例分析

2023-06-15 07:06:53 767人浏览 八月长安
摘要

小编给大家分享一下PyTorch中优化器optimizer.param_groups用法的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!optimizer.param_groups: 是长度为2的list,其中的元

小编给大家分享一下PyTorch优化器optimizer.param_groups用法的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

optimizer.param_groups: 是长度为2的list,其中的元素是2个字典;

optimizer.param_groups[0]: 长度为6的字典,包括[‘amsgrad', ‘params', ‘lr', ‘betas', ‘weight_decay', ‘eps']这6个参数;

optimizer.param_groups[1]: 好像是表示优化器的状态的一个字典;

import torchimport torch.optim as optimh3w1 = torch.randn(3, 3)w1.requires_grad = Truew2 = torch.randn(3, 3)w2.requires_grad = Trueo = optim.Adam([w1])print(o.param_groups)
[{'amsgrad': False,  'betas': (0.9, 0.999),  'eps': 1e-08,  'lr': 0.001,  'params': [tensor([[ 2.9064, -0.2141, -0.4037],           [-0.5718,  1.0375, -0.6862],           [-0.8372,  0.4380, -0.1572]])],  'weight_decay': 0}]
Per the docs, the add_param_group method accepts a param_group parameter that is a dict. Example of use:h3import torchimport torch.optim as optimh3w1 = torch.randn(3, 3)w1.requires_grad = Truew2 = torch.randn(3, 3)w2.requires_grad = Trueo = optim.Adam([w1])print(o.param_groups)givesh3[{'amsgrad': False,  'betas': (0.9, 0.999),  'eps': 1e-08,  'lr': 0.001,  'params': [tensor([[ 2.9064, -0.2141, -0.4037],           [-0.5718,  1.0375, -0.6862],           [-0.8372,  0.4380, -0.1572]])],  'weight_decay': 0}]nowh3o.add_param_group({'params': w2})print(o.param_groups)
[{'amsgrad': False,  'betas': (0.9, 0.999),  'eps': 1e-08,  'lr': 0.001,  'params': [tensor([[ 2.9064, -0.2141, -0.4037],           [-0.5718,  1.0375, -0.6862],           [-0.8372,  0.4380, -0.1572]])],  'weight_decay': 0}, {'amsgrad': False,  'betas': (0.9, 0.999),  'eps': 1e-08,  'lr': 0.001,  'params': [tensor([[-0.0560,  0.4585, -0.7589],           [-0.1994,  0.4557,  0.5648],           [-0.1280, -0.0333, -1.1886]])],  'weight_decay': 0}]
# 动态修改学习率for param_group in optimizer.param_groups:    param_group["lr"] = lr # 得到学习率optimizer.param_groups[0]["lr"] h3# print('查看optimizer.param_groups结构:')# i_list=[i for i in optimizer.param_groups[0].keys()]# print(i_list)    ['amsgrad', 'params', 'lr', 'betas', 'weight_decay', 'eps']

补充:pytorch中的优化器总结

以SGD优化器为例:

# -*- coding: utf-8 -*-#@Time    :2019/7/3 22:31#@Author  :XiaoMa from torch import nn as nnimport torch as tfrom torch.autograd import Variable as V#定义一个LeNet网络class Net(nn.Module):    def __init__(self):        super(Net,self).__init__()        self.features=nn.Sequential(            nn.Conv2d(3,6,5),            nn.ReLU(),            nn.MaxPool2d(2,2),            nn.Conv2d(6,16,5),            nn.ReLU(),            nn.MaxPool2d(2,3)        )                self.classifier=nn.Sequential(\            nn.Linear(16*5*5,120),            nn.ReLU(),            nn.Linear(120,84),            nn.ReLU(),            nn.Linear(84,10)            )    def forward(self, x):        x=self.features(x)        x=x.view(-1,16*5*5)        x=self.classifier(x)        return xnet=Net() from torch import optim #优化器optimizer=optim.SGD(params=net.parameters(),lr=1)optimizer.zero_grad()   #梯度清零,相当于net.zero_grad() input=V(t.randn(1,3,32,32))output=net(input)output.backward(output)     #fake backwardoptimizer.step()    #执行优化 #为不同子网络设置不同的学习率,在finetune中经常用到#如果对某个参数不指定学习率,就使用默认学习率optimizer=optim.SGD(    [{'param':net.features.parameters()},    #学习率为1e-5    {'param':net.classifier.parameters(),'lr':1e-2}],lr=1e-5) #只为两个全连接层设置较大的学习率,其余层的学习率较小special_layers=nn.ModuleList([net.classifier[0],net.classifier[3]])special_layers_params=list(map(id,special_layers.parameters()))base_params=filter(lambda p:id(p) not in special_layers_params,net.parameters()) optimizer=t.optim.SGD([    {'param':base_params},    {'param':special_layers.parameters(),'lr':0.01}],lr=0.001)

调整学习率主要有两种做法。

一种是修改optimizer.param_groups中对应的学习率,另一种是新建优化器(更简单也是更推荐的做法),由于optimizer十分轻量级,构建开销很小,故可以构建新的optimizer。

但是新建优化器会重新初始化动量等状态信息,这对使用动量的优化器来说(如自带的momentum的sgd),可能会造成损失函数在收敛过程中出现震荡。

如:

#调整学习率,新建一个optimizerold_lr=0.1optimizer=optim.SGD([                {'param':net.features.parameters()},                {'param':net.classifiers.parameters(),'lr':old_lr*0.5}],lr=1e-5)

看完了这篇文章,相信你对“pytorch中优化器optimizer.param_groups用法的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: pytorch中优化器optimizer.param_groups用法的示例分析

本文链接: https://www.lsjlt.com/news/278633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytorch中优化器optimizer.param_groups用法的示例分析
    小编给大家分享一下pytorch中优化器optimizer.param_groups用法的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!optimizer.param_groups: 是长度为2的list,其中的元...
    99+
    2023-06-15
  • pytorch中的优化器optimizer.param_groups用法
    optimizer.param_groups: 是长度为2的list,其中的元素是2个字典; optimizer.param_groups[0]: 长度为6的字典,包括[‘amsgr...
    99+
    2024-04-02
  • Pytorch梯度下降优化的示例分析
    这篇文章主要介绍了Pytorch梯度下降优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、激活函数1.Sigmoid函数函数图像以及表达式如下:通过该函数,可以...
    99+
    2023-06-25
  • Oracle优化器的示例分析
    这篇文章主要介绍Oracle优化器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、优化器的模式      优化器的模式用...
    99+
    2024-04-02
  • mysql中limit优化的示例分析
    小编给大家分享一下mysql中limit优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!    ...
    99+
    2024-04-02
  • MySQL中table_cache优化的示例分析
    这篇文章主要介绍MySQL中table_cache优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!table_cache指定表高速缓存的大小。每当MySQL访问一个表时,...
    99+
    2024-04-02
  • MySQL中InnoDB MRR优化的示例分析
    这篇文章将为大家详细讲解有关MySQL中InnoDB MRR优化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言MRR 是 Multi-Range Read ...
    99+
    2024-04-02
  • PostgreSQL中查询优化的示例分析
    小编给大家分享一下PostgreSQL中查询优化的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、总体说明下面是PG源码目录(/src/backend/optimizer)中的R...
    99+
    2024-04-02
  • Mysql优化之Zabbix分区优化的示例分析
    这篇文章主要介绍了Mysql优化之Zabbix分区优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用zabbix最大的瓶颈在于...
    99+
    2024-04-02
  • mysql hint优化的示例分析
    这篇文章将为大家详细讲解有关mysql hint优化的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。SELECT t.oldcontract...
    99+
    2024-04-02
  • PyTorch中inplace字段的示例分析
    小编给大家分享一下PyTorch中inplace字段的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!例如torch.nn.ReLU(inplace=Tru...
    99+
    2023-06-15
  • PyTorch dataloader中shuffle=True的示例分析
    小编给大家分享一下PyTorch dataloader中shuffle=True的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对shuffle=True...
    99+
    2023-06-15
  • mysql中慢查询优化的示例分析
    这篇文章主要介绍mysql中慢查询优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一个用户反映线上一个SQL语句执行时间慢得无法接受。SQL语句看上去很简单(本文描述中修...
    99+
    2024-04-02
  • MySQL中SQL语句优化的示例分析
    这篇文章主要介绍MySQL中SQL语句优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql如下:sql强制用了into_time索引# Time: 2017-02-14...
    99+
    2024-04-02
  • MySQL中SQL优化建议的示例分析
    这期内容当中小编将会给大家带来有关MySQL中SQL优化建议的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。今天早上看到同事的一个优化需求,优化的时间其实不多,但...
    99+
    2024-04-02
  • MySQL中索引与优化的示例分析
    这篇文章主要介绍MySQL中索引与优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!索引与优化1、选择索引的数据类型MySQL支持很多数据类型,选择合适的数据类型存储数据对...
    99+
    2024-04-02
  • seo优化中tag标签的示例分析
    这篇文章主要介绍了seo优化中tag标签的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  1、tag标签对我们网站优化有什么优点tag标签功能不管是百度还是用户,都...
    99+
    2023-06-10
  • Javascript中JSON数据分组优化的示例分析
    小编给大家分享一下Javascript中JSON数据分组优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!现有一堆数据...
    99+
    2024-04-02
  • MySQL查询优化的示例分析
    小编给大家分享一下MySQL查询优化的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、优化的思路和原则有哪些1、 优化更需要优化的查询 2、 定位优化对象的性能瓶颈 3、 明确优...
    99+
    2024-04-02
  • my.ini与mysql优化的示例分析
    小编给大家分享一下my.ini与mysql优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql优化了所以先说说...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作