pytorch变量、学习率设置等trick小结

el/2024/4/19 23:03:19

最近用到需要用到Pytorch的变量、学习率调整等操作,特此做个小结记录:

 

如果需要在Module中定义多个变量,直接在init函数中定义可能对module并不可见,至少打印出来优化参数时是不存在的,这时可以使用pytorch nn.ParameterList将参数组合成Pytorch支持的数组,具体细节官网文档更清楚,如果 看中文,见下面的链接:

https://www.lizenghai.com/archives/7538.html

另外,定义变量时不要加.cuda(),就是是不能手动调用.cuda()方法将其加载在GPU上,事实上它会自动在GPU上加载,可以通过model.state_dict()或者model.named_parameters()函数查看现在的全部可训练参数(包括通过继承得到的父类中的参数)。相关细节可见下面这篇博客:

https://blog.csdn.net/qq_19672579/article/details/79195568

 

可以通过下面的方法给模型中的不同组的参数设置不同的学习率:

for name, value in model.named_parameters():if "Parameter" in name:kernel_para += [value]elif "theta" in name:theta_para += [value]else:conv_para += [value]

 然后通过下面的方式使用:

optimizer = torch.optim.Adam([{"params": kernel_para, 'lr': 0.01},{"params": theta_para, 'lr': 0.1},{"params": conv_para, 'lr': 0.001},],weight_decay = 1e-5,
)

最后通过下面的方式给每组参数设置不同的随迭代次数变化(衰减)的学习率:

def adjust_learning_rate(optimizer, epoch):if epoch < 3:iter_count = 0for param_group in optimizer.param_groups:if iter_count < 2:param_group['lr'] = param_group['lr'] * 0.3iter_count += 1

 

另外关于pytorch model.named_parameters() ,model.parameters() ,model.state_dict().items()可见下面的这篇博客:

https://blog.csdn.net/u013548568/article/details/84311099

 

 

最后,关于Pyotch训练过程中的“奇技淫巧”可参见知乎:

https://zhuanlan.zhihu.com/p/76459295

 


http://www.ngui.cc/el/5181816.html

相关文章

Linux buff/cache过高解决 及 numpy创建大矩阵时报 MemoryError

Linux buff/cache过高解决&#xff1a; https://blog.csdn.net/sweetfather/article/details/82902140 如果遇到permission denied,请使用sudo numpy.zeros()创建大矩阵时可能会报MemeoryError&#xff0c;除了上面的释放buff外&#xff0c;还可以使用numpy的open_memmap函数…

Java解析HL7消息进阶(解析自定义HL7消息)

上一篇文章博主笼统的讲了HL7解析&#xff0c;以及解析完成的Message结构&#xff0c;详情移步&#x1f449;&#xff08;Java通过HAPI解析HL7消息&#xff09;&#xff0c;下面博主就来讲讲通过HL7如何解析自定义消息 HL7&#xff08;详情&#xff09; Health Level Seven组…

找XShell替代品,用Tabby

找XShell替代品&#xff1f;不满意FinalShell&#xff1f;我推荐这款开源工具&#x1f970; 现目前的的远程终端工具有很多&#xff0c;功能齐全好用的收费&#xff0c;免费的功能外观又不怎么满意。XShell收费而且感觉用起来也一般&#xff0c;putty免费但很不方便&#xff0c…

windows 中搭建Gogs局域git仓库

windows 中搭建Gogs局域git仓库 前言 SVN我所欲也&#xff0c;Git我所欲也~ 但是最后&#xff0c;我选择了Git&#xff0c;不为别的&#xff0c;只是好用。 Git好用&#xff0c;可是服务器搭建很麻烦&#xff0c;GitHub、GitLab、码云….. 后来我想起了我以前公司搭建的局…

关于autoprefixer 编译丢失样式 处理

/* autoprefixer: off */-webkit-box-orient: vertical; /* autoprefixer: on */ 参考&#xff1a; https://github.com/postcss/autoprefixer/issues/776

H5移动端 IOS输入法遮挡input解决思路

思路 input 输入框置于页面底部&#xff0c;用absolute绝对定位于父级底部&#xff0c;在被唤起输入框时&#xff0c;会被IOS输入法自带的toolbar遮挡住input。 So&#xff0c;我的思路就是&#xff1a;点击input框后&#xff0c;延时出现&#xff0c;等IOS输入法唤起后&#…

Chocolatey 安装与命令

Chocolatey是一款专为Windows系统开发的、基于NuGet的包管理器工具&#xff0c;类似于Node.js的npm&#xff0c;MacOS的brew&#xff0c;Ubuntu的apt-get&#xff0c;它简称为choco。Chocolatey的设计目标是成为一个去中心化的框架&#xff0c;便于开发者按需快速安装应用程序和…

关于Mock数据笔记

Mock格式&#xff1a; 基础语法 参考 mock.js 文档 {"string|1-10": "★","string2|3": "★★","number|1": 202,"number2|1-100.1-10": 1,"boolean|1": true,"regexp": /[a-z][A-Z][0-9]…

RAP2本地搭建

RAP2搭建笔记 前言环境要求服务端 delos 环境搭建构建项目环境配置配置文件启动项目 客户端 dolores 环境搭建构建项目环境配置启动项目 本人遇到的问题附录 前言 2018年由于前后端分离&#xff0c;接口协定&#xff0c;于是自己想整一个接口管理后台&#xff0c;寻觅了半天&a…

关于VUE2.0+PM2搭建

关于VUE2.0PM2搭建 安装VUE脚手架 $ npm install vue-cli -g //这个是将vue脚手架进行全局安装。 $ npm install vue/cli -g //vue-cli3脚手架&#xff0c;安装此脚手架会更改创建项目命令&#xff0c;也可通过桥接npm包来保持vue2的命令 初始化vue项目&#xff08;进入自己…