1. 网络模型

2.不同层设置不同学习率

这里以adam优化器为例

#不同层设置不同的学习率
train_params = list(map(id,crnn.rnn.parameters())) #20
rest_params = filter(lambda x:id(x) not in train_params, crnn.parameters()) #20#print('22222222222222222222:', len(list(rest_params)))# loss averager
loss_avg = utils.averager() #对loss取平均对象# setup optimizer
if opt.adam:#对不同层设置不同学习率#optimizer = optim.Adam(crnn.parameters(), lr=opt.lr,#                       betas=(opt.beta1, 0.999))#optimizer = torch.nn.DataParallel(optimizer, device_ids=range(opt.ngpu))### weight_decay防止过拟合的参数optimizer = optim.Adam([{'params':crnn.rnn[0].rnn.parameters(),'lr':0.0000001,'betas':(0.5,0.999)},{'params':crnn.rnn[0].embedding.parameters(),'lr':0.0000001,'betas':(0.5,0.999)},{'params':crnn.rnn[1].rnn.parameters(),'lr':0.0000001,'betas':(0.5,0.999)},{'params':crnn.rnn[1].embedding.parameters(),'lr':opt.lr,'betas':(0.5,0.999)},{'params':rest_params,'lr':opt.lr,'betas':(0.5,0.999)}])

3. 训练过程更新学习率

上述我们只对rnn网络进行训练,并对最后一层进行lr的更新。

def adjust_learning_rate(optimizer, epoch):"""Sets the learning rate to the initial LR decayed by 10 every 5 epochs"""lr = opt.lr * (0.1 ** (epoch // 5))#for param_group in optimizer.param_groups: #每一层的学习率都会下降optimizer.param_groups[3]['lr'] = lrfor epoch in range(opt.nepoch):######每5个epoch修改一次学习率(只修改最后一个全连接层)adjust_learning_rate(optimizer, epoch)

4. cnn层冻结

for p in crnn.named_parameters():p[1].requires_grad = Trueif 'rnn' in p[0]:   #训练rnn层 #训练最后一层  #rnn  rnn.1.embeddingp[1].requires_grad = Trueelse:p[1].requires_grad = False##冻结模型层crnn.train()

【PyTorch】crnn-finetune模型学习率调整策略相关推荐

  1. PyTorch学习之六个学习率调整策略

    PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现.PyTorch提供的学习率调整策略分为三大类,分别是 a. 有序调整:等间隔调整(Step),按需调整学习率( ...

  2. 【深度学习】图解 9 种PyTorch中常用的学习率调整策略

    learning rate scheduling 学习率调整策略 01 LAMBDA LR 将每个参数组的学习率设置为初始lr乘以给定函数.当last_epoch=-1时,将初始lr设置为初始值. t ...

  3. pytorch优化器学习率调整策略以及正确用法

    优化器 optimzier优化器的作用:优化器就是需要根据网络反向传播的梯度信息来更新网络的参数,以起到降低loss函数计算值的作用. 从优化器的作用出发,要使得优化器能够起作用,需要主要两个东西: ...

  4. Pytorch —— 学习率调整策略

    1.为什么要调整学习率 学习率控制梯度更新的快慢,在训练中,开始时的学习率比较大,梯度更新步伐比较大,后期时学习率比较小,梯度更新步伐比较小. 梯度下降:wi+1=wi−g(wi)w_{i+1}=w_ ...

  5. PyTorch框架学习十四——学习率调整策略

    PyTorch框架学习十四--学习率调整策略 一._LRScheduler类 二.六种常见的学习率调整策略 1.StepLR 2.MultiStepLR 3.ExponentialLR 4.Cosin ...

  6. PyTorch的六个学习率调整

    本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 文章目录 一.pytorc ...

  7. YOLOv5-优化器和学习率调整策略

    优化器和学习率调整策略 pytorch-优化器和学习率调整 这个链接关于优化器和学习率的一些基础讲得很细,还有相关实现代码 优化器 前向传播的过程,会得到模型输出与真实标签的差,我们称之为损失, 有了 ...

  8. keras train_on_batch详解(train_on_batch的输出输入详解,train_on_batch多GPU训练详解,自定义学习率调整策略)

    利用 train_on_batch 精细管理训练过程 大部分使用 keras 的同学使用 fit() 或者 fit_generator() 进行模型训练, 这两个 api 对于刚接触深度学习的同学非常 ...

  9. 【DL】——Warmup学习率调整策略

    1. warmup的必要性 原理这部分转载自: 神经网络中 warmup 策略为什么有效:有什么理论解释么? 那么在什么时候可能不成立呢?论文[3]告诉我们有两种情况: 在训练的开始阶段,模型权重迅速 ...

最新文章

  1. 使用ultraedit和cl编译器打造简易c/c++开发环境
  2. 老版本select2设置初始值
  3. STM32中NVIC_SystemReset()函数的作用?什么时候用?
  4. 大型互联网网站架构心得之:分、并、换
  5. MFC的模块状态:从AfxGetApp()和AFX_MANAGE_STATE()看MFC的模块状态
  6. centos7卸载docker_使用 Docker 部署 Spring Cloud 项目详细步骤
  7. linphone支持 G729
  8. js根据文字获取首字母案例,直接复制在html中即可查看效果
  9. java发布帖子_第一篇发在javaeye的帖子
  10. matlab读取nc数据的某一列数据库,科学网—.nc数据读取详细资料matlab2010a及后面的版本 - 张凌的博文...
  11. java类的使用方法小结_JavaPoet的使用指南小结
  12. 智利车厘子的尺寸说明,给大家扫盲
  13. 解决使用vscode写typescript变量报错无法重新声明块范围变量
  14. 天津高清卫星影像数据包下载
  15. Qt5 实现文件复制并在指定路径下创建文件夹
  16. 带感小说:程序员坐牢会被安排写代码吗?
  17. MySQL之IN的优化
  18. php microtime()函数
  19. 如何下载 MySQL安装包
  20. 『姑苏 · 踏青』:诗情未尽在苏杭

热门文章

  1. 计算机管理中的用户和组里的名称和全名有什么不同
  2. java异步调用外部接口
  3. SQL的表格之间的join连接方式——inner join/left join/right join/full join语法及其用法实例
  4. 关于买电脑的建议-知识点介绍(比较详细)
  5. canvas烟雾效果学习
  6. 转:不同域名注册商修改 DNS 方法
  7. AirServer2023最新免费苹果电脑投屏工具
  8. mysql数据库搬家,MySQL数据库迁移上云-数据搬家不用愁
  9. 转载蜂巢软件分析的 JBPM的执行流程
  10. Linux中内存管理详解