位置: 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)

  • iphone7可以升级iOS15吗(iPhone7可以升级iOS11吗)

    iphone7可以升级iOS15吗(iPhone7可以升级iOS11吗)

  • qq状态我在听歌为什么不显示(qq状态我在听歌怎么显示歌词)

    qq状态我在听歌为什么不显示(qq状态我在听歌怎么显示歌词)

  • vivoy9s怎么快捷截屏(vivos9e怎么设置快捷键)

    vivoy9s怎么快捷截屏(vivos9e怎么设置快捷键)

  • 长镜头和一镜到底区别(长镜头和一镜到底哪个好)

    长镜头和一镜到底区别(长镜头和一镜到底哪个好)

  • 华为的隐藏功能是怎么使用的(华为的隐藏功能在哪里打开)

    华为的隐藏功能是怎么使用的(华为的隐藏功能在哪里打开)

  • tp路由器设置完成,无法上网怎么办(tp路由器设置成功后上不了网)

    tp路由器设置完成,无法上网怎么办(tp路由器设置成功后上不了网)

  • 苹果耳机3代使用方法(苹果耳机3代使用教程降噪)

    苹果耳机3代使用方法(苹果耳机3代使用教程降噪)

  • 电脑上ctrl是什么意思(电脑上的ctrl键有什么用)

    电脑上ctrl是什么意思(电脑上的ctrl键有什么用)

  • 华为荣耀9x隐藏功能(华为荣耀9x隐藏相册)

    华为荣耀9x隐藏功能(华为荣耀9x隐藏相册)

  • 苹果手机哪些自带软件可以删除(苹果手机哪些自带软件不可以删除)

    苹果手机哪些自带软件可以删除(苹果手机哪些自带软件不可以删除)

  • oppoa9微信视频怎么没有美颜(oppo手机微信视频小窗口怎么调出来)

    oppoa9微信视频怎么没有美颜(oppo手机微信视频小窗口怎么调出来)

  • vivov1934A是什么型号(vivov1934a是什么型号)

    vivov1934A是什么型号(vivov1934a是什么型号)

  • 抖音里什么叫垂直作品(抖音里什么叫垂直赛道)

    抖音里什么叫垂直作品(抖音里什么叫垂直赛道)

  • 物理数据独立性是指(物理数据独立性的概念)

    物理数据独立性是指(物理数据独立性的概念)

  • world里面如何设置文字对齐(word1.2怎么设置)

    world里面如何设置文字对齐(word1.2怎么设置)

  • 华为手机在哪插耳机(华为手机在哪插手机卡)

    华为手机在哪插耳机(华为手机在哪插手机卡)

  • 在微型计算机中内存是按什么编制的(在微型计算机中,主机部分包括)

    在微型计算机中内存是按什么编制的(在微型计算机中,主机部分包括)

  • vivox27怎么没有面部解锁(vivox27怎么没有更多设置功能)

    vivox27怎么没有面部解锁(vivox27怎么没有更多设置功能)

  • 英语趣配音怎么双人录音(英语趣配音怎么退出登录)

    英语趣配音怎么双人录音(英语趣配音怎么退出登录)

  • wps表格打印预览快捷键是(wps表格打印预览显示不全怎么设置)

    wps表格打印预览快捷键是(wps表格打印预览显示不全怎么设置)

  • 苹果xr基带是高通的吗(苹果xr用的基带)

    苹果xr基带是高通的吗(苹果xr用的基带)

  • oppok3有耳机孔吗(oppok3能用typec接口耳机吗)

    oppok3有耳机孔吗(oppok3能用typec接口耳机吗)

  • iphonexr怎么开热点(苹果xr如何开热点)

    iphonexr怎么开热点(苹果xr如何开热点)

  • 怎么恢复快手以前作品(怎么恢复快手以前删掉的作品)

    怎么恢复快手以前作品(怎么恢复快手以前删掉的作品)

  • 微软承诺将 Win11/10 Whiteboard 白板应用回滚至旧的 UWP 版本(微软推出windows11系)

    微软承诺将 Win11/10 Whiteboard 白板应用回滚至旧的 UWP 版本(微软推出windows11系)

  • Get请求报错404出现原因及解决办法

    Get请求报错404出现原因及解决办法

  • 增值税开票软件ukey版
  • 2020小规模纳税人增值税税率
  • 材料采购暂估入账
  • 季度所得税从业人员怎么填
  • 企业的哪些活动对企业有长期影响呢
  • 企业库存现金的限额是由( )核定的
  • 应交税费减免税款
  • 本票汇票支票的区别
  • 管理费用多计提了怎么冲
  • 企业办自建厂房理房产证需要什么资料
  • 生育津贴个税汇算清缴可以扣除吗
  • 开具的增值税发票丢失最新处理办法
  • 农产品销售发票是什么?
  • 不抵扣勾选怎么挽回
  • 工程物资应该计入哪里
  • 水利工程建设费用组成
  • 职工食堂租赁费
  • 进项税额转出怎么填申报表
  • 生育津贴公司账户怎么维护
  • 集团提供厂房是否需要缴纳印花税?
  • 无票收入的账务怎么处理
  • 消耗性生物资产是指什么
  • 如何不同版本复制粘贴
  • 平均应收账款是什么
  • 个体工商户需要办公户吗
  • php zip模块
  • laravel自动生成接口文档
  • 鸿蒙可以看小电影吗
  • 微软win11预览版
  • php stream_get_meta_data返回值
  • 怎样做好固定资产管理工作
  • 授权经销书模板
  • php 调用函数
  • 买支票需要带什么章
  • 收到无法支付的押金收入
  • 运费抵扣的基本原则
  • 减免增值税会计处理
  • php 序列化和json性能
  • yolov5训练参数说明
  • vue created mounted
  • php接口技术实例分析
  • 先收票后收货
  • 2023年第十一批专项债
  • three.js如何给模型锚点
  • vue 动态样式
  • opencv+python
  • 广告宣传制作
  • 新设立的企业如何办理开业税务登记
  • 小企业机械作业指导书
  • 期末调整汇兑损益计算
  • 母公司和子公司可以一起投标吗
  • 小规模纳税人应交税费会计分录
  • Python的aiohttp模块如何使用?
  • mongodb常用语句
  • 企业残保金计提分录
  • 小规模纳税人防水工程专用发票税率是多少
  • 快速实现愿望超灵的方法
  • 广交会展务
  • 预付和挂账如何区分
  • 已核销的坏账又收回时应当及时入账,防止形成账外款
  • 其他费用包括哪些内容
  • mysql事件id100
  • Windows 8.1下MySQL5.7 忘记root 密码的解决方法
  • sql比较数值大小
  • Win10系统安装包
  • 苹果电脑重新安装macos失败
  • 如何让windows7更快
  • mac如何设置wifi热点
  • win10小娜怎么用不了
  • linux的复制
  • cocos2d游戏源码
  • linux中vi命令是什么意思
  • shell脚本自动化
  • angularjs1.5
  • 安装了python2.7和3.6怎么切换版本
  • 基于javascript的毕业设计
  • 整理的什么
  • 黄金消费税如何缴纳
  • 土地增值税的房屋转让指出售 赠与
  • 国税新规
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设