当前位置: 首页 > news >正文

〖open-mmlab: MMDetection〗解析文件:configs/_base_/schedules

详细解析三个训练调度文件:schedule_1x.py、schedule_2x.py、schedule_20e.py

在深度学习模型训练过程中,训练调度(Training Schedule)是至关重要的,它决定了模型训练过程中学习率(Learning Rate, LR)的变化以及训练的总轮数(Epochs)。本文将详细解析三个训练调度文件:schedule_1x.pyschedule_2x.pyschedule_20e.py,这三个文件分别对应不同的训练时长和策略。

区别

这三个文件的主要区别在于训练的总轮数(max_epochs)和学习率调度策略(param_scheduler)中的milestones参数。max_epochs决定了训练的总轮数,而milestones参数则定义了在哪些epoch时学习率会进行衰减。

  • schedule_1x.py:训练总轮数为12轮,学习率在第8轮和第11轮时衰减。
  • schedule_2x.py:训练总轮数为24轮,学习率在第16轮和第22轮时衰减。
  • schedule_20e.py:训练总轮数为20轮,学习率在第16轮和第19轮时衰减。

schedule_1x.py 解析

# training schedule for 1x
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=12, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')# learning rate
param_scheduler = [dict(type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500),dict(type='MultiStepLR',begin=0,end=12,by_epoch=True,milestones=[8, 11],gamma=0.1)
]# optimizer
optim_wrapper = dict(type='OptimWrapper',optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))# Default setting for scaling LR automatically
#   - `enable` means enable scaling LR automatically
#       or not by default.
#   - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
auto_scale_lr = dict(enable=False, base_batch_size=16)

训练配置(train_cfg

  • type: 'EpochBasedTrainLoop',表示训练循环是基于epoch的。
  • max_epochs: 12,训练的总轮数为12轮。
  • val_interval: 1,表示每1轮进行一次验证。

验证和测试配置(val_cfgtest_cfg

  • 两者都设置为默认的循环配置。

学习率调度(param_scheduler

  • 首先使用LinearLR,从0开始线性增加到start_factor=0.001,直到end=500迭代。
  • 然后使用MultiStepLR,在第8轮和第11轮时,学习率乘以gamma=0.1进行衰减。

优化器配置(optim_wrapper

  • 使用SGD作为优化器,初始学习率为0.02,动量为0.9,权重衰减为0.0001

自动缩放学习率(auto_scale_lr

  • enable: False,表示不自动缩放学习率。
  • base_batch_size: 16,基础批量大小。

schedule_2x.py 解析

# training schedule for 2x
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=24, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')# learning rate
param_scheduler = [dict(type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500),dict(type='MultiStepLR',begin=0,end=24,by_epoch=True,milestones=[16, 22],gamma=0.1)
]# optimizer
optim_wrapper = dict(type='OptimWrapper',optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))# Default setting for scaling LR automatically
#   - `enable` means enable scaling LR automatically
#       or not by default.
#   - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
auto_scale_lr = dict(enable=False, base_batch_size=16)

训练配置(train_cfg

  • max_epochs: 24,训练的总轮数为24轮。

学习率调度(param_scheduler

  • 使用MultiStepLR,在第16轮和第22轮时,学习率乘以gamma=0.1进行衰减。

schedule_20e.py 解析

# training schedule for 20e
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=20, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')# learning rate
param_scheduler = [dict(type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500),dict(type='MultiStepLR',begin=0,end=20,by_epoch=True,milestones=[16, 19],gamma=0.1)
]# optimizer
optim_wrapper = dict(type='OptimWrapper',optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))# Default setting for scaling LR automatically
#   - `enable` means enable scaling LR automatically
#       or not by default.
#   - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
auto_scale_lr = dict(enable=False, base_batch_size=16)

训练配置(train_cfg

  • max_epochs: 20,训练的总轮数为20轮。

学习率调度(param_scheduler

  • 使用MultiStepLR,在第16轮和第19轮时,学习率乘以gamma=0.1进行衰减。

总结

这三个训练调度文件主要区别在于训练的总轮数和学习率衰减的时机。通过调整这些参数,可以控制模型的训练过程,以达到更好的训练效果。在实际应用中,根据模型的复杂度和训练数据的量,可以灵活选择或调整这些参数。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • @Value读取properties中文乱码解决方案
  • CTK框架(三): 插件的安装
  • 记录|单例模式小记
  • Spring表达式语言(SPEL)(05)
  • 51单片机-串口通信(单片机和PC互发数据)
  • 软件部署-Docker容器化技术
  • 探索Python的数学魔法:Numpy库的神秘力量
  • 二维空间向量的p范数等密度轨迹
  • 负载均衡--资源申请说明(三)
  • 基于苹果Vision Pro的AI NeRF方案:MetalSplatter
  • SpringBoot3+Vue3开发商店上货管理系统
  • WordPress上可以内容替换的插件
  • 漫谈设计模式 [16]:中介者模式
  • windows C++ 虚拟内存的按需调拨
  • Typora教程
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 30秒的PHP代码片段(1)数组 - Array
  • Angular 响应式表单 基础例子
  • canvas 高仿 Apple Watch 表盘
  • canvas绘制圆角头像
  • Docker 笔记(2):Dockerfile
  • HTTP请求重发
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • October CMS - 快速入门 9 Images And Galleries
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 阿里研究院入选中国企业智库系统影响力榜
  • 从重复到重用
  • 翻译:Hystrix - How To Use
  • 给初学者:JavaScript 中数组操作注意点
  • 构建工具 - 收藏集 - 掘金
  • 基于HAProxy的高性能缓存服务器nuster
  • 跨域
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前端路由实现-history
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (02)vite环境变量配置
  • (2)空速传感器
  • (3)nginx 配置(nginx.conf)
  • (42)STM32——LCD显示屏实验笔记
  • (C++17) optional的使用
  • (Git) gitignore基础使用
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十三)Flink SQL
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)ObjectiveC 深浅拷贝学习
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net Core 笔试1