位置: IT常识 - 正文

有关optimizer.param_groups用法的示例分析(有关的拼音)

发布时间:2024-01-17
有关optimizer.param_groups用法的示例分析 Optimizeroptimizer.param_groups用法的示例分析

推荐整理分享有关optimizer.param_groups用法的示例分析(有关的拼音),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:有关端午节的古诗,有关中秋节的古诗,有关读书的名言,有关的拼音,有关月亮的诗句,有关中秋节的古诗,有关诚信的名言,有关厉元朗的小说,内容如对您有帮助,希望把文章链接给更多的朋友!

日期:2022年7月25日

pytorch版本: 1.11.0

对于param_groups的探索

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

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

下面用的Adam优化器创建了一个optimizer变量:

>>> optimizer.param_groups[0].keys()>>> dict_keys(['params', 'lr', 'betas', 'eps', 'weight_decay', 'amsgrad', 'maximize'])

可以自己把训练参数分别赋予不同的学习率,这样子list里就不止一个元素了,而是多个字典了。

params 是一个list[…],里面存放参数

>>> len(optimizer.param_groups[0]['params'])>>> 48>>> optimizer.param_groups[0]['params'][0]>>> Parameter containing:tensor([[ 0.0212, -0.1151, 0.0499, ..., -0.0807, -0.0572, 0.1166], [-0.0356, -0.0397, -0.0980, ..., 0.0690, -0.1066, -0.0583], [ 0.0238, 0.0316, -0.0636, ..., 0.0754, -0.0891, 0.0258], ..., [ 0.0603, -0.0173, 0.0627, ..., 0.0152, -0.0215, -0.0730], [-0.1183, -0.0636, 0.0381, ..., 0.0745, -0.0427, -0.0713],

lr 是学习率

>>> optimizer.param_groups[0]['lr']>>> 0.0005有关optimizer.param_groups用法的示例分析(有关的拼音)

betas 是一个元组(…),与动量相关

>>> optimizer.param_groups[0]['betas']>>> (0.9, 0.999)

eps

>>> optimizer.param_groups[0]['eps']>>> 1e-08

weight_decay 是一个int变量

>>> optimizer.param_groups[0]['weight_decay']>>> 0

amsgrad是一个bool变量

>>> optimizer.param_groups[0]['amsgrad']>>> False

maximize 是一个bool变量

>>> optimizer.param_groups[0]['maximize']>>> False

以网上的例子来继续试验:

import torchimport torch.optim as optimw1 = torch.randn(3, 3)w1.requires_grad = Truew2 = torch.randn(3, 3)w2.requires_grad = Trueo = optim.Adam([w1])print(o.param_groups)# 输出>>> [{'params': [tensor([[-0.1002, 0.3526, -1.2212], [-0.4659, 0.0498, -0.2905], [ 1.1862, -0.6085, 0.4965]], requires_grad=True)], 'lr': 0.001, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0, 'amsgrad': False, 'maximize': False}]

以下主要是Optimizer这个类有个add_param_group的方法

# Per the docs, the add_param_group method accepts a param_group parameter that is a dict. Example of use:import torchimport torch.optim as optimw1 = torch.randn(3, 3)w1.requires_grad = Truew2 = torch.randn(3, 3)w2.requires_grad = Trueo = optim.Adam([w1])print(o.param_groups)# 输出>>> [{'params': [tensor([[-1.5916, -1.6110, -0.5739], [ 0.0589, -0.5848, -0.9199], [-0.4206, -2.3198, -0.2062]], requires_grad=True)], 'lr': 0.001, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0, 'amsgrad': False, 'maximize': False}]o.add_param_group({'params': w2})print(o.param_groups)# 输出>>> [{'params': [tensor([[-1.5916, -1.6110, -0.5739], [ 0.0589, -0.5848, -0.9199], [-0.4206, -2.3198, -0.2062]], requires_grad=True)], 'lr': 0.001, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0, 'amsgrad': False, 'maximize': False}, {'params': [tensor([[-0.5546, -1.2646, 1.6420], [ 0.0730, -0.0460, -0.0865], [ 0.3043, 0.4203, -0.3607]], requires_grad=True)], 'lr': 0.001, 'betas': (0.9, 0.999), 'eps': 1e-08, 'weight_decay': 0, 'amsgrad': False, 'maximize': False}]平时写代码如何动态修改学习率(常规操作)for param_group in optimizer.param_groups: param_group["lr"] = lr 补充:pytorch中的优化器总结

以SGD优化器为例:

from torch import nn as nnimport torch as tfrom torch.autograd import Variable as Vfrom torch import optim # 优化器# 定义一个LeNet网络class LeNet(t.nn.Module): def __init__(self): super(LeNet, self).__init__() self.features = t.nn.Sequential( t.nn.Conv2d(3, 6, 5), t.nn.ReLU(), t.nn.MaxPool2d(2, 2), t.nn.Conv2d(6, 16, 5), t.nn.ReLU(), t.nn.MaxPool2d(2, 2) ) # 由于调整shape并不是一个class层, # 所以在涉及这种操作(非nn.Module操作)需要拆分为多个模型 self.classifiter = t.nn.Sequential( t.nn.Linear(16*5*5, 120), t.nn.ReLU(), t.nn.Linear(120, 84), t.nn.ReLU(), t.nn.Linear(84, 10) ) def forward(self, x): x = self.features(x) x = x.view(-1, 16*5*5) x = self.classifiter(x) return xnet = LeNet()# 通常的step优化过程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) optimizer.step() # 执行优化

为不同的子网络参数不同的学习率,finetune常用,使分类器学习率参数更高,学习速度更快(理论上)。

1.经由构建网络时划分好的模组进行学习率设定,

# 为不同子网络设置不同的学习率,在finetune中经常用到# 如果对某个参数不指定学习率,就使用默认学习率optimizer = optim.SGD( [{'params': net.features.parameters()}, # 学习率为1e-5 {'params': net.classifiter.parameters(), 'lr': 1e-2}], lr=1e-5)

2.以网络层对象为单位进行分组,并设定学习率

# 只为两个全连接层设置较大的学习率,其余层的学习率较小# 以层为单位,为不同层指定不同的学习率# 提取指定层对象special_layers = nn.ModuleList([net.classifiter[0], net.classifiter[3]])# 获取指定层参数idspecial_layers_params = list(map(id, special_layers.parameters()))# 获取非指定层的参数idbase_params = filter(lambda p: id(p) not in special_layers_params, net.parameters())optimizer = t.optim.SGD([ {'params': base_params}, {'params': special_layers.parameters(), 'lr': 0.01}], lr=0.001)

参考: https://blog.csdn.net/weixin_43593330/article/details/108490956 https://www.cnblogs.com/hellcat/p/8496727.html https://www.yisu.com/zixun/456082.html

本文链接地址:https://www.jiuchutong.com/zhishi/300340.html 转载请保留说明!

上一篇:深度学习分析NASA电池数据(1 数据读取)

下一篇:详解Transformer中Self-Attention以及Multi-Head Attention(transformer for)

  • qqcom邮箱的格式(qq邮箱)

    qqcom邮箱的格式(qq邮箱)

  • 路由器怎么安装(路由器怎么安装)(路由器怎么安装在光猫上)

    路由器怎么安装(路由器怎么安装)(路由器怎么安装在光猫上)

  • Redmi K30 Pro支持的传感器有哪些(redmi k30 pro支持OTG吗)

    Redmi K30 Pro支持的传感器有哪些(redmi k30 pro支持OTG吗)

  • 酷我音乐账号注销失败(酷我音乐账号注销后手机号还能重新绑定吗)

    酷我音乐账号注销失败(酷我音乐账号注销后手机号还能重新绑定吗)

  • 11和xr屏幕一样吗(xr和11屏幕一模一样吗)

    11和xr屏幕一样吗(xr和11屏幕一模一样吗)

  • 短信收藏后在哪里找到(短信收藏后在哪里看)

    短信收藏后在哪里找到(短信收藏后在哪里看)

  • dpnvigi是什么开关(dpnnvigi是什么意思)

    dpnvigi是什么开关(dpnnvigi是什么意思)

  • 网易音乐怎么显示歌词桌面(网易音乐怎么显示车载音乐)

    网易音乐怎么显示歌词桌面(网易音乐怎么显示车载音乐)

  • 网络无法上网怎么回事(网络无法上网怎么修)

    网络无法上网怎么回事(网络无法上网怎么修)

  • nova5i有没有nfc功能(nova5i 有没有nfc)

    nova5i有没有nfc功能(nova5i 有没有nfc)

  • 小米路由器网速慢怎么解决(小米路由器网速不稳定)

    小米路由器网速慢怎么解决(小米路由器网速不稳定)

  • 戴尔电脑如何强制关机(戴尔电脑如何强制重装系统)

    戴尔电脑如何强制关机(戴尔电脑如何强制重装系统)

  • vivoy5s有指示灯吗(vivoy5s灯在哪里)

    vivoy5s有指示灯吗(vivoy5s灯在哪里)

  • 如何关闭微信免密功能(如何关闭微信免密码支付功能)

    如何关闭微信免密功能(如何关闭微信免密码支付功能)

  • 手机性能模式什么意思(手机设置里的性能模式有什么用)

    手机性能模式什么意思(手机设置里的性能模式有什么用)

  • 苹果手机无法安装第三方软件怎么办(苹果手机无法安装软件)

    苹果手机无法安装第三方软件怎么办(苹果手机无法安装软件)

  • 如何禁小米浏览器自动下载(小米浏览器怎么禁止弹窗)

    如何禁小米浏览器自动下载(小米浏览器怎么禁止弹窗)

  • 怎么保存快手视频(怎么保存快手视频没有快手号)

    怎么保存快手视频(怎么保存快手视频没有快手号)

  • 电脑上大于等于号怎么打(电脑上大于等于≥怎么输入英文)

    电脑上大于等于号怎么打(电脑上大于等于≥怎么输入英文)

  • 怎么让小说自己读出来(怎么让小说自己读软件)

    怎么让小说自己读出来(怎么让小说自己读软件)

  • vivoy3是哪年出的(vivoy3什么时候出的)

    vivoy3是哪年出的(vivoy3什么时候出的)

  • 如何关闭QQ账号查找功能(qq怎么关闭账号保护)

    如何关闭QQ账号查找功能(qq怎么关闭账号保护)

  • 苹果电池峰值如何恢复(苹果电池峰值如何开启)

    苹果电池峰值如何恢复(苹果电池峰值如何开启)

  • 梅德威海滩棕榈树间散步的冲浪者,印尼巴厘岛 (© helivideo/GettyImages)

    梅德威海滩棕榈树间散步的冲浪者,印尼巴厘岛 (© helivideo/GettyImages)

  • 收到以前年度退所得税分录
  • 美国个税计算器2021计算器
  • 附加税计提多了怎么调整税额
  • 资产负债表里的存货包括哪些科目
  • 房屋过户收费标准
  • 月末结存材料的实际成本怎么计算
  • 不征收耕地占用税的情形
  • 物业要交多少钱
  • 生育津贴个税汇算清缴可以扣除吗
  • 存货自然灾害损失进项税
  • 季报所得税可以预交吗
  • 招聘时开具的专用发票可以抵扣吗?
  • 债务重组损失金额
  • 查账征收的成本费用
  • 递延资产摊销属于什么科目
  • 公司投资私募股票有哪些
  • 增值税税额计入什么科目?
  • 利息资本化的时点
  • 个体户没有进项票怎么开销项发票
  • 怎么用u盘启动dos
  • 国家统计局一套表平台网址
  • 投资入股的无形资产要摊销吗
  • 如何防止win10自动重启
  • 局域网游戏电脑
  • 无形资产出租的账务处理
  • 苹果电脑字体文件怎么拖出来
  • vue-cli typescript
  • 文化事业建设费减免政策
  • 银行对账单附在记账凭证中吗
  • smarty模板数学运算示例
  • 前端get请求传数组
  • 云服务器远程端口
  • 最新前端面试题
  • vue常用
  • 税务退附加税会计分录
  • 房屋租赁费属于什么税收分类编码
  • 资产负债表日后调整事项
  • 代发工资怎么做
  • 汇算清缴退税的账务处理
  • 外币应收账款汇兑损失计入
  • 怎么查看代理记账协议终止情况
  • 财务制度备案信息是不是可以不填
  • 发票遗失要如何补办
  • sql dbo
  • 小规模纳税人税额怎么算
  • 运费与快递费的区别在哪
  • 库存盘盈盘亏说明
  • 长期股权投资稀释股权的两种
  • 计提企业所得税的会计科目
  • 哪些支出可以在出国公杂费中扣除
  • 盘亏盘盈的会计处理
  • 资金周转率计算公式
  • 多交的社保退回多久能到账
  • 计提本月工资的账务处理
  • 营改增后税额计算公式
  • 购买苗木怎么做政府会计分录
  • 以前年度应交税费多计提怎么调平
  • 计算成本时应该考虑什么
  • 装修费摊销怎么计算公式
  • 财务费用中的利息费用指什么
  • 原始凭证填制要点在原始凭证上书写阿拉伯数字正确的有
  • 劳务费可以白条入账吗
  • sql server 错误
  • mysql 高效分页
  • windows7如何获得正版
  • win 2008
  • 丢失msvcp71.dll
  • linux系统中文件权限分为哪三种
  • office进程
  • win7系统禁用网络后如何开启
  • win7旗舰版好不好
  • windows向microsoft报告
  • Win10预览版拆弹
  • javascript脚本怎么用
  • python读取图片属性
  • 江苏电子税务局网站官网
  • 证券经纪人收入构成
  • 韩国税务怎么算收入
  • 电子就业协议签了还是应届生
  • 金税盘白盘如何换纽扣电池
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号