Pytorch 如何训练网络时调整学习率
作者:HDU_number1_ADC 发布时间:2022-01-31 20:08:48
标签:Pytorch,训练,调整,学习率
为了得到更好的网络,学习率通常是要调整的,即刚开始用较大的学习率来加快网络的训练,之后为了提高精确度,需要将学习率调低一点。
如图所示,步长(学习率)太大容易跨过最优解。
代码如下:
表示每20个epoch学习率调整为之前的10%
optimizer = optim.SGD(gan.parameters(),
lr=0.1,
momentum=0.9,
weight_decay=0.0005)
lr = optimizer.param_groups[0]['lr'] * (0.1 ** (epoch // 20))
for param_group in optimizer.param_groups:
param_group['lr'] = lr
print(optimizer.param_groups[0]['lr'])
补充:Pytorch 在训练过程中实现学习率衰减
在网络的训练过程中,学习率是一个非常重要的超参数,它直接影响了网络的训练效果。
但过大的学习率将会导致网络无法达到局部最小点,使得训练结果震荡,准确率无法提升,而过小的学习率将会导致拟合速度过慢,浪费大量的时间和算力。
因此我们希望在训练之初能够有较大的学习率加快拟合的速率,之后降低学习率,使得网络能够更好的达到局部最小,提高网络的效率。
torch.optim.lr_scheduler.LambdaLR()
torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)
其中optimizer就是包装好的优化器, lr_lambda即为操作学习率的函数。
将每个参数组的学习速率设置为初始的lr乘以一个给定的函数。
当last_epoch=-1时,将初始lr设置为lr。
torch.optim.lr_scheduler.StepLR()
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
其中optimizer就是包装好的优化器,step_size (int) 为学习率衰减期,指几个epoch衰减一次。gamma为学习率衰减的乘积因子。 默认为0.1 。当last_epoch=-1时,将初始lr设置为lr。
来源:https://blog.csdn.net/qq_42262373/article/details/90232130
0
投稿
猜你喜欢
- 前言opencv中封装了一个专门用于求解cv::Mat均值的函数,即cv::mean(&cv::Mat),该函数会得到Mat中各个通
- 在做实验时,我们常常会使用用开源的数据集进行测试。而Pytorch中内置了许多数据集,这些数据集我们常常使用DataLoader类进行加载。
- 用Python写个注册登录功能,供大家参考,具体内容如下本文是用Python写一个注册登录功能,难度不大,很适合练手主要就是用列表和字典,以
- 从今年3月份开始mysql官网开始发布相关的5.6系列的各个版本,对于mysql5.6系列的版本对一起的版本进行了全局性的细节性加强;个人感
- 本文实例讲述了Python读写及备份oracle数据库操作。分享给大家供大家参考,具体如下:最近项目中需要用到Python调用oracle实
- 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数。 2. 使用Function对象来进行返
- 一、location 对象是什么?window 对象给我们提供了一个 location 属性用于获取或设置窗体的 URL,并且可以用于解析
- 如下所示:str='abcdef'print(str.endswith('f'))print(str.sta
- 函数就是把具有独立功能的代码块封装成一个小模块,可以直接调用,从而提高代码的编写效率以及重用性, 需要注意的是, 函数需要被调用才会执行,
- 背景我打开手机,发现有人在QQ空间里叫嚣。看他得意的样子,显然是在家里呆久了,已经忘了天有多高。预处理设计一个迷宫自动寻路算法并不难,但是对
- 实际效果:假设给定目录"/media/data/programmer/project/python" ,备份路径&quo
- pip源配置文件可以放置的位置:Linux/Unix:/etc/pip.con~/.pip/pip.conf (每一个我都找了都没有,所以我
- 数组/对象数组删除其中某一项由于日常工作中经常需要对数组进行操作,最经常使用到的就是对数组进行的删除操作对于我们前端来说,数组有两种区别1、
- 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。生产环境
- 大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQL
- 实例如下:from win32com.client import Dispatch import win32com.client
- 世界疫情数据下载请点击》》:疫情数据下载注:此数据是2022年3月12号的结果,其中透明的地方代表确诊人数小于10万人,白色的地方代表无该国
- 继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一
- 如下所示:<div id="app"> <h1>我是直接写在构造器里的模板1</h1&g
- 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在.NET平台中,有非常著名的第三方开