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

  • 一刻相册怎么下载照片(一刻相册怎么下载到手机上)

    一刻相册怎么下载照片(一刻相册怎么下载到手机上)

  • 扩容机可以升级系统吗(扩容机可以升级还原吗)

    扩容机可以升级系统吗(扩容机可以升级还原吗)

  • ipad有低电量模式吗(ipad2018低电量模式)

    ipad有低电量模式吗(ipad2018低电量模式)

  • 手机哪些权限不能开(手机哪些权限是不能让应用获取的)

    手机哪些权限不能开(手机哪些权限是不能让应用获取的)

  • 微信公众号保存的文章在哪里(微信公众号保存图片会被知道吗)

    微信公众号保存的文章在哪里(微信公众号保存图片会被知道吗)

  • 技术迭代是什么意思(技术迭代是什么阶段)

    技术迭代是什么意思(技术迭代是什么阶段)

  • 三星a60黑屏后再摁开不开(三星手机明明黑屏了却还在运行)

    三星a60黑屏后再摁开不开(三星手机明明黑屏了却还在运行)

  • nova3外屏可以单独换吗(华为nova3e换外屏)

    nova3外屏可以单独换吗(华为nova3e换外屏)

  • 开启会议直播是什么意思(开启会议直播是啥意思)

    开启会议直播是什么意思(开启会议直播是啥意思)

  • 手机扫了微信电脑登录为啥不能登录(手机扫微信电脑显示未登陆)

    手机扫了微信电脑登录为啥不能登录(手机扫微信电脑显示未登陆)

  • 华为新款40何时上市(华为40会降价吗)

    华为新款40何时上市(华为40会降价吗)

  • 怎么把腾讯视频下载到本地(怎么把腾讯视频里的视频剪辑出来)

    怎么把腾讯视频下载到本地(怎么把腾讯视频里的视频剪辑出来)

  • 快手后台闪退怎么解决方法(快手闪退原因)

    快手后台闪退怎么解决方法(快手闪退原因)

  • 字符char型数据在微机内存中的存储形式是(字符类型char所表示的值的集合是什么)

    字符char型数据在微机内存中的存储形式是(字符类型char所表示的值的集合是什么)

  • 爱奇艺怎么限制别人用(爱奇艺怎么限制观看内容)

    爱奇艺怎么限制别人用(爱奇艺怎么限制观看内容)

  • word2003怎么打开页面设置(word2003怎么打开docx)

    word2003怎么打开页面设置(word2003怎么打开docx)

  • 华为手机锁屏新闻怎么关闭(华为手机锁屏新闻怎么取消)

    华为手机锁屏新闻怎么关闭(华为手机锁屏新闻怎么取消)

  • 怎样把快手视频存本地(怎样把快手视频保存到相册)

    怎样把快手视频存本地(怎样把快手视频保存到相册)

  • 手机怎么查银行卡的钱(手机怎么查银行卡号全部数字)

    手机怎么查银行卡的钱(手机怎么查银行卡号全部数字)

  • 华为荣耀白名单在哪里(荣耀app白名单)

    华为荣耀白名单在哪里(荣耀app白名单)

  • 支付宝体验金有什么用(支付宝体验金有没害处)

    支付宝体验金有什么用(支付宝体验金有没害处)

  • 苹果xr支持多大的快充(苹果xr支持多大车载)

    苹果xr支持多大的快充(苹果xr支持多大车载)

  • 微信发原图有什么区别(微信发原图什么意思)

    微信发原图有什么区别(微信发原图什么意思)

  • 快手直播条件是什么(快手直播有哪些条件)

    快手直播条件是什么(快手直播有哪些条件)

  • 为什么要清理C盘,如何清理(为什么要清理肠道垃圾)

    为什么要清理C盘,如何清理(为什么要清理肠道垃圾)

  • pgrep命令  检索进程PID号码(pgrep命令详解)

    pgrep命令 检索进程PID号码(pgrep命令详解)

  • poweroff命令  关闭操作系统(powercfg off)

    poweroff命令 关闭操作系统(powercfg off)

  • 既简易计税又一般计税的进项专票可以抵扣吗
  • 资源税应该如何计算
  • 机动车发票税率怎么算
  • 增值税的计税依据是什么
  • 超率累进税率有哪些税种呢怎么算
  • 怎么恢复自然人个人信息
  • 通行费 发票
  • 企业预缴的增值税税率
  • 汽车4s店索赔和维修
  • 企业所得税收入是什么意思
  • 行政单位明细账包括哪些
  • 装修预付款怎么做分录
  • 公司代扣代缴的个人所得税怎么做账
  • 项目所在地怎么填
  • 公司注销固定资产交什么税
  • 通讯费企业所得税计算
  • 代收电费可以开发票吗
  • 防伪税控技术维护费是进项还是销项
  • 税务改革方向
  • 非全日制员工个税扣除标准
  • 收到员工补缴的公积金怎么入账
  • 分期收款什么时候交税
  • 增值税附加税怎么计提
  • 存货入库后的仓储费记录
  • 租房押金收不回来怎么做账
  • 2021年windows最新版本
  • c盘文件详解
  • 固定资产丢失进项税需要转出吗
  • php string
  • PHP:Memcached::decrement()的用法_Memcached类
  • kpupgrader.exe是什么
  • php入门例子
  • 将款项汇往外地采购专用账户会计分录
  • 与取得收入无关的其他支出
  • ecshop app搭建
  • css如何实现文字环绕
  • php -r
  • 补差价如何做账
  • 背景渐变 css
  • 自建的不动产
  • phpcms官网打不开
  • 工程项目成本管理实论
  • 《中华人民共和国禁毒法》自( )起施行
  • 企业账务处理程序的概念
  • 代扣代缴个人所得税账务处理
  • 车船税征收范围有
  • 会计销售返利处理流程
  • 现金流量表每月要报吗
  • 附加税减免政策2020年
  • 增值税欠税及滞纳金计算
  • 挂靠公司收的税费计入什么科目?
  • 如何进行税前扣除
  • 金融资产发生的负债包括
  • 行程单如何验真伪
  • 建筑行业预收账款预缴税
  • 汽车销售企业的资产有哪些
  • 利润表中的营业收入怎么算出来的
  • 原材料会计科目
  • mysql5.7.21安装教程
  • 删除表s
  • innodb数据和索引文件
  • window放大之后怎么缩小
  • win7任务栏功能
  • ubuntu /opt
  • centos运行文件
  • openbsd 6.9
  • 微软每月补丁更新一般于什么时间发布
  • window10电话
  • sistray.exe - sistray是什么进程 有什么用
  • 批处理执行bat文件
  • SendTo增强版 批处理实用小工具
  • shell脚本中调用外部c程序
  • JQuery 设置checkbox值二次无效的解决方法
  • 以非gradle方式将 Eclipse 项目导入Android Studio
  • 公司自有房屋装修费用入什么料目
  • 朝阳区下面分几个区
  • 已办理了退休,档案还需要保存吗
  • 个人所得税房贷能退多少钱
  • 深圳12366接听客服工作怎么样
  • 北京市停车发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设