config文件命名意义:
{model}[model setting]{backbone}{neck}[norm setting][misc][gpu x batch_per_gpu]{schedule}{dataset}
{model}:表示具体模型,如faster_rcnn、mask_rcnn等;
[model setting]:某些模型的具体设置,如htc的without_semantic、reppoints的moment等;
{backbone}:骨干网络,如r50、x101等;
{neck}:网络颈,如fpn、pafpn、nasfpn、c4等;
[norm setting]:正则化设置,如bn、gn、syncbn、gn-head/gn-neck、gn-all等;
[misc]:其他设置,如dconv、gcb、attention、albu、mstrain等;
[gpu x batch_per_gou]:使用的总 G P U {\rm GPU} GPU数以及每块 G P U {\rm GPU} GPU的采样数;
{schedule}:设置学习策略,如1x、2x、20e等;
{dataset}:指示具体的数据集,如coco、cityscapes、voc_0712、wider_face等。

# optimizer 优化参数,lr为学习率,momentum为动量因子,weight_decay为权重衰减因子
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None) #梯度均衡参数
# learning policy
lr_config = dict(policy='step',  # 优化策略warmup='linear', # 初始的学习率增加的策略,linear为线性增加warmup_iters=500,  # 在初始的500次迭代中学习率逐渐增加warmup_ratio=0.001,# 起始的学习率step=[8, 11])  # 在第8和11个epoch时降低学习率
runner = dict(type='EpochBasedRunner', max_epochs=12)

1、momentum
不恰当的初始权值可能使得网络的损失函数在训练过程中陷入局部最小值,达不到全局最优的状态。momentum为动量因子,当 momentum 动量越大时,其转换为势能的能量也就越大,就越有可能摆脱局部凹域的束缚,进入全局凹域。
v为动量,初始化为0,momentum为动量因子,最常见的设定值是0.9
v = momentum * v - learning_rate * dw
w = w + v
如果上次的momentum(v)与这次的负梯度方向是相同的,那这次下降的幅度就会加大,从而加速收敛。momentum算法将一段时间内的梯度向量进行了加权平均,分别计算得到梯度更新过程中 w 和 b 的大致走向,一定程度上消除了更新过程中的不确定性因素(如摆动现象),使得梯度更新朝着一个越来越明确的方向前进。
2、weight_decay
weight_decay为权重衰减系数。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型失函数的值也就大。
3、lr学习率
理论上来说,通常学习率过小->收敛过慢,学习率过大->错过局部最优
实际上来说,可能:学习率过小->不收敛,学习率过大->不收敛
base_lr(基础学习率)、regular_lr(基础学习率衰减list)、warmup_lr(热身阶段学习率)
base_lr=0.02
regular_lr=base_lr*系数
regular_lr=[0.02,0.02 * 0.1,0.02 * 0.01]
warmup:
k = (1 - cur_iters / self.warmup_iters) * (1 - self.warmup_ratio)
warmup_lr = [_lr * (1 - k) for _lr in self.regular_lr]
也就是warmup_lr = lr * (self.warmup_ratio+(1 - self.warmup_ratio) * cur_iters / self.warmup_iters)
k=(1-cur_iters/500) * (1-0.001) 越来越小
warmup_lr = [_lr * (1 - k) for _lr in self.regular_lr]越来越大
学习率变化:上升——平稳——下降

warmup使用场景:
1、当网络非常容易nan时候,采用warm up进行训练,可使得网络正常训练;
2、如果训练集损失很低,准确率高,但测试集损失大,准确率低,可用warm up;

mmdetection - config配置文件之schedule(learning rate)相关推荐

  1. mmdetection - config配置文件之datasets

    configs/base/文件目录下有三个文件夹,datasets:为数据集相关配置文件:models:为一些经典模型配置:schedules:主要是对potimizer和lr,以及runner组件的 ...

  2. 【学习率调整】学习率衰减之周期余弦退火 (cyclic cosine annealing learning rate schedule)

    1. 概述 在论文<SGDR: Stochastic Gradient Descent with Warm Restarts>中主要介绍了带重启的随机梯度下降算法(SGDR),其中就引入了 ...

  3. Adam和学习率衰减(learning rate decay)

    1.梯度下降法更新参数 梯度下降法参数更新公式: 其中,η 是学习率,θt是第 t 轮的参数,J(θt) 是损失函数,∇J(θt) 是梯度. 在最简单的梯度下降法中,学习率 ηη 是常数,是一个需要实 ...

  4. 深度学习成长之路(二)学习率(learning rate)的知识汇总

    首先是找到的三篇不错的博客,看完收获很多.链接如下: 机器之心 学习速率设置指南 简书 batchsize和lr的笔记 雷锋网 抛弃learning rate decay 学习率(learning r ...

  5. Python中logging.config配置文件解读

    Python中logging.config配置文件解读 下面的函数用于配置logging模块,它们位于logging.config模块中.你可以使用这些函数来配置,也可以在logging或是loggi ...

  6. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  7. web.config配置文件详解

    一.认识Web.config文件 Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式), ...

  8. 如何理解深度学习分布式训练中的large batch size与learning rate的关系?

    问题详情: 在深度学习进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练,但large batch一般较于小的baseline的batch size性能更差,请问 ...

  9. Paper:论文解读《Adaptive Gradient Methods With Dynamic Bound Of Learning Rate》中国本科生提出AdaBound的神经网络优化算法

    Paper:论文解读-<Adaptive Gradient Methods With Dynamic Bound Of Learning Rate>中国本科生(学霸)提出AdaBound的 ...

  10. 学习速率 learning rate

    学习速率的选取策略 运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率 ααα : 如果学习速率太小,则会使收敛过慢. 如果学习速率太大,则会导致代价函数振荡 ...

最新文章

  1. VINS(八)初始化
  2. onnx:Resize in opset 11 to support Pytorch‘s behavior
  3. boost::sub_range相关的测试程序
  4. javaweb----DAO模型设计
  5. css样式加入的法方,初学必知:XHTML网页中加入CSS的五种方_css
  6. matlab 数字图像滤波,数字图像处理 (基于Matlab) 滤波
  7. 怎样安装ubuntu系统
  8. Linux服务器端口access改为trunk all
  9. 关于非堆内存申请的性能测试
  10. VS2010设置快捷键
  11. (愚人节玩笑)历史上最奇怪的圆周率计算法
  12. 利用JD-GUI寻找JAR内部依赖
  13. matlab两条曲线方程求交点_帮忙matlab求两条曲线交点程序,不知问题出在哪里。...
  14. 泰坦尼克号数据挖掘项目实战——Task1 数据分析
  15. 9 客户端认证方式 之 PKCE
  16. 网红超火罗马桌面时钟效果
  17. Laravel中使用SweetAlert美化提示框Alert
  18. 人工智能技术的应用越来越广,极大促进了无人机产业的发展
  19. java 横向 打印出来_java jacob调用打印,word,excel横向打印
  20. python c++情侣网名是什么意思_c++和Python的选择?

热门文章

  1. win7升级win10正式版_Win7系统如何才能升级成win10系统?
  2. 无论用手工处理还是用计算机进行处理,会计电算化试卷
  3. Java实现 蓝桥杯VIP 算法提高 字符串跳步
  4. linux考试题100道
  5. 接口限流算法(关于临界点处理)
  6. 全覆盖路径规划--Morse函数临界点的地图精确单元分解
  7. Spring Environment全解析
  8. 【办公协作软件】万彩办公大师教程丨全能文档转换工具
  9. 用友U8+V13.0安装步骤
  10. DSP 2812 的经典资料