位置: IT常识 - 正文

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

编辑:rootadmin
有关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)

  • 品牌经营不可陷入6大误区(品牌商的经营难点)

    品牌经营不可陷入6大误区(品牌商的经营难点)

  • 卸载软件后依然有残留病毒怎么办?(卸载后软件还在)

    卸载软件后依然有残留病毒怎么办?(卸载后软件还在)

  • 微信收货地址可以更改吗(微信收货地址是干嘛的)

    微信收货地址可以更改吗(微信收货地址是干嘛的)

  • freebuds3丢了可以定位找到吗(freebuds3pro丢了怎么办)

    freebuds3丢了可以定位找到吗(freebuds3pro丢了怎么办)

  • 抖音一小时多少流量正常(抖音一小时多少钱)

    抖音一小时多少流量正常(抖音一小时多少钱)

  • 微信如何自己建群(微信如何自己建表情包)

    微信如何自己建群(微信如何自己建表情包)

  • 通用里面没有辅助功能(通用没有辅助功能怎么办)

    通用里面没有辅助功能(通用没有辅助功能怎么办)

  • 荣耀笔记本14和15的区别(荣耀笔记本14和16哪个值得买)

    荣耀笔记本14和15的区别(荣耀笔记本14和16哪个值得买)

  • 苹果蓝牙耳机2代和3代的区别(苹果蓝牙耳机2代什么时候出的)

    苹果蓝牙耳机2代和3代的区别(苹果蓝牙耳机2代什么时候出的)

  • 允许修改系统设置是什么意思(允许修改系统设置有什么危害)

    允许修改系统设置是什么意思(允许修改系统设置有什么危害)

  • qq群允许多少人语音聊天(qq群多少人不需要同意)

    qq群允许多少人语音聊天(qq群多少人不需要同意)

  • 亚马逊个人卖家和专业卖家区别(亚马逊个人卖家如何完成账户认证)

    亚马逊个人卖家和专业卖家区别(亚马逊个人卖家如何完成账户认证)

  • 钉钉屏幕共享视频没有声音怎么办(钉钉屏幕共享视频有声音吗)

    钉钉屏幕共享视频没有声音怎么办(钉钉屏幕共享视频有声音吗)

  • 迅雷快鸟是干什么用的(迅雷 迅雷快鸟)

    迅雷快鸟是干什么用的(迅雷 迅雷快鸟)

  • 手机下载的歌曲在哪里(手机下载的歌曲为什么没有出现在文件)

    手机下载的歌曲在哪里(手机下载的歌曲为什么没有出现在文件)

  • 华为ussd代码怎么关闭(华为ussb代码是什么意思)

    华为ussd代码怎么关闭(华为ussb代码是什么意思)

  • 苹果6s plus突然没有声音了(苹果6splus突然黑屏开不了机)

    苹果6s plus突然没有声音了(苹果6splus突然黑屏开不了机)

  • 苹果手机接不到陌生电话是怎么回事(苹果手机接不到电话只有短信提醒)

    苹果手机接不到陌生电话是怎么回事(苹果手机接不到电话只有短信提醒)

  • 苹果8plus屏幕材质(苹果8plus屏幕材质好不好)

    苹果8plus屏幕材质(苹果8plus屏幕材质好不好)

  • 手机接触不好怎么办(手机接触不好怎么办呢)

    手机接触不好怎么办(手机接触不好怎么办呢)

  • 苹果xr怎么隐藏软件图标(苹果XR怎么隐藏下面的一横)

    苹果xr怎么隐藏软件图标(苹果XR怎么隐藏下面的一横)

  • 联想笔记本开启vt(联想笔记本开启触摸板)

    联想笔记本开启vt(联想笔记本开启触摸板)

  • vivox27pro有红外线吗(vivox27手机带红外线功能)

    vivox27pro有红外线吗(vivox27手机带红外线功能)

  • 抖音插件怎么安装(在抖音插件)

    抖音插件怎么安装(在抖音插件)

  • 小米手机自带美颜怎么关闭(小米手机自带美颜功能在哪)

    小米手机自带美颜怎么关闭(小米手机自带美颜功能在哪)

  • 网易云手机号换了怎么解绑(网易云手机号换了怎么登录)

    网易云手机号换了怎么解绑(网易云手机号换了怎么登录)

  • python从键盘输入若干个整数(python从键盘输入正整数n,计算1+2+3)

    python从键盘输入若干个整数(python从键盘输入正整数n,计算1+2+3)

  • 小规模纳税人收普票和专票有什么区别
  • 劳务公司一般纳税人要交什么税
  • 油库存油租赁
  • 货物退回是什么意思
  • 固定资产升值可以入账吗?
  • 金税盘续费怎么开票
  • 税种认定网上操作流程
  • 食堂买菜无发票可以在费用中开支吗
  • 合并报表的抵消分录要做账吗
  • 发工资多发了可以要回吗
  • 报废资产取得的增值税
  • 企业购买小轿车进项税额可以抵扣吗
  • 注册公司买车划算吗
  • 长期投资项目包括哪些
  • 19年入职19年离职
  • 合同资产和工程存货的区别
  • 公司租车交税
  • 事业单位收受礼品怎么处理
  • 可以用鸿蒙系统的手机
  • 企业的借款利息支出全部可以税前扣除吗
  • 生产车间报表表格图片
  • 归还银行借款摘要模板
  • 技术转市场到底是不是个正确的选择
  • 资产负债表左方烈士的资产按什么排列
  • php cmd
  • yii框架怎么样
  • err03 failed to
  • php常用工具
  • php使用( )关键字来创建对象
  • vuex状态机
  • ajax调用php接口
  • 决算清理期和库款报解整理期
  • 财务费用税前扣除标准是多少
  • 房屋出租 交税
  • php安装了还要配置吗
  • python中排序
  • 跨省市提供建筑服务
  • 公司出租房屋如何开票
  • 其他应付款包括应付股利和应付利息吗
  • mysql insert语句操作实例讲解
  • 个人缴纳税是什么意思
  • 增值税征收类型
  • 提取折旧的意义
  • 运输公司赔偿账务处理
  • 结转完期间损益是不是可以结账了
  • 设备投资要开票吗
  • 哪些行业不能开电子发票
  • 幼儿园报税的基础是什么
  • 原材料暂估入库成本结转处理
  • 在建工程不做了发生的费用如何做账?
  • 费用预算表怎么做
  • sql查询界面怎么做
  • mysql数据库的介绍
  • 在ubuntu中安装虚拟机
  • centos7怎么看cpu和内存
  • 苹果官网入口
  • 安装linux出现grub的原因
  • windows8怎么设置开机密码
  • c:windowssys:em32mtgyu.dll 内存分配访问无效的解决办法
  • 怎么关闭win10升级
  • windows小娜怎么开启
  • 安卓百分百
  • excel中利用条件格式展示数据
  • jsp分页显示
  • docker如何部署环境到生产
  • cocos2dx入门
  • ie内存怎么清理
  • linux bash中too many arguments问题的解决方法
  • nodejs开发微信小程序
  • js闭包作用问题解决应用
  • 安卓自定义app
  • js怎么判断日期大小
  • python 字典怎么添加数据
  • 国家税务总局广州市税务局
  • 发票查验平台可以查询自己给对方开的发票吗?
  • 公司完税证明去哪里打
  • 安置房公摊面积多少属于正常范围
  • 耕地占用税免税项目需要计入计税依据吗
  • 小规模企业降税
  • 税务稽查工作底稿属于什么证据
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设