〖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进行衰减。

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/873638.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国产芯片LT8619C:HDMI转RGB/LVDS转换器,4k x 2k 30Hz高分辨率

以下为LT8619C转换芯片的简介,如有不足或错误,请指正: LT8619C是一款高性能HDMI/双模DP接收器芯片,符合HDMI 1.4规范。支持TTL或LVDS信号输出,TTL输出时,可支持输出RGB、BT656、BT1120信号,输出…

深度置信网络(深度信念网络)DBN分类模型(二分类多分类)-MATLAB代码实现

一、深度置信网络DBN(代码获取:底部公众号) 深度置信网络(Deep Belief Network,DBN)是一种基于无监督学习的深度神经网络模型,它由多个受限玻尔兹曼机(Restricted Boltzmann Machin…

SAP与湃睿PLM系统集成案例

一、项目背景 浙江某家用电机有限公司, 该公司的产品涵盖洗衣机、‌空调、‌冰箱及厨房用具等家电电机的制造,‌具备年产4600万台电机的生产能力,‌是中国最大的家电电机生产基地之一。 为确保工艺路线信息在设计与生产执行层面的无缝传递&#xff0…

misc音频隐写

一、MP3隐写 (1)题解:下载附件之后是一个mp3的音频文件;并且题目提示keysyclovergeek;所以直接使用MP3stego对音频文件进行解密;mp3stego工具是音频数据分析与隐写工具 (2)mp3stego工具的使用:…

攻防世界--->迷宫

做题笔记。 下载 查壳 64ida打开。 对于迷宫_Maze 一般都可以分为: ① 找地图 ② 找方向键 ③ 分析路径 ④ 得到路径 其中,可以手动,也可以写脚本(利用DFS以及BFS) 正题: 前置&…

树 --- 二叉树

树的物理结构和逻辑结构上都是树形结构。 树形结构:由一个根和若干个子节点组成的集合。 叶子节点:最外围的节点,只有前驱而没有后继。 (一)树的性质 • ⼦树是不相交的 • 除了根结点外,每个结点有且仅…

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我…

解锁高效驱动密码:SiLM8260A系列SiLM8260ABCS-DG 集成米勒钳位的双通道隔离驱动芯片

附上SiLM8260A同系列型号参考: SiLM8260ADCS-DG 12.5V/11.5V SiLM8260ABCS-DG 8.5V/7.5V SiLM8260AACS-DG 5.5V/5V SiLM8260AGCS-DG 3.5V/3V SiLM8260ABCS-DG是一款集成了米勒钳位功能的双通道隔离驱动芯片,它精准地满足了上述严苛条件。具备…

研发效能DevOps: VSCode进行前端项目初始配置

目录 一、实验 1.环境 2.安装Node.js 3.初始化前端项目 二、问题 1.cnpm安装报错 2.如何删除cnpm与指定cnpm版本 3.前端项目运行报错 4.node版本与npm版本对应关系如何查询 一、实验 1.环境 (1)主机 表1 主机 系统 软件版本备注Windows11VS …

【vscode】vscode paste image插件设置

本文首发于 ❄️慕雪的寒舍 vscode编辑md文件的时候,如果想插入图片,自带的粘贴只会粘贴到当前目录下,也没有文件重命名,很不友好。 在扩展商店里面有mushan的Paste Image插件,相比自带的,更加友好一点。但…

3、Hadoop部署

1、 Hadoop部署 1)集群部署规划 注意:NameNode和SecondaryNameNode不要安装在同一台服务器 注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。 hadoop102 hadoop103 hadoop104 HDFS…

项目9-网页聊天室9(测试报告)

1.项目背景 本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室,与其他在线用户实时交 流。系统支持文字消息的快速发送和接收、消息实时推送,确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效的 数据…

用眼过度,眼睛干涩、疲劳?快试试中医眼灸,缓解你的眼睛不舒服~

长期用眼过度,你是否有这样的感觉: 看一会电脑,眼睛又干又涩,非常疲惫; 用眼过度,不仅眼睛累,近视度数也在增加; 不注重保护眼睛,眼纹、眼袋、黑眼圈全来了。 眼睛不舒…

机器学习之 PCA降维

1.PCA 降维简介 主成分分析(Principal Component Analysis, PCA)是一种统计方法,用于在数据集中寻找一组线性组合的特征,这些特征被称为主成分。PCA 的目标是通过变换原始特征空间到新的特征空间,从而减少数据的维度&…

RESTful 还是 JSON-RPC

前言 RESTful 比较简单地说就是,大家请求一样的url(GET方法有一个例外,url中带了一个id),通过不同的请求方法,分别进行不同的操作(CRUD)。 JSON-RPC JSON-RPC是一个无状态且轻量级…

WPF-快速构建统计表、图表并认识相关框架

一、使用ScottPlot.Wpf 官网地址:https://scottplot.net/quickstart/wpf/ 1、添加NuGet包:ScottPlot.Wpf 2、XAML映射命名空间: xmlns:ScottPlot"clr-namespace:ScottPlot.WPF;assemblyScottPlot.WPF" 3、简单示例:…

zhidianyun01/基于 ThinkPHP+Mysql 的智慧园区+智慧园区管理系统+园区物业管理系统+园区物业管理系统源码

园区物业管理系统园区管理系统园区管理园区物业物业管理系统园区物业管理系统源码 软件架构 ThinkPHPMysql 源码合作 提供完整源代码 软件界面展示

AndroidStudio清除重置Http Proxy代理的方式

问题背景 在国内做代码开发的都知道,在国际互联网我们存在看不见的墙,导致无法访问一些代码库和资源,所以在使用开发工具拉取第三方库的时候总会遇到无法连接或者连接超时的情况,所以就会使用一些安全的网络代理工具,辅…

消息队列 MQ 性能大揭秘

RabbitMQ 以下是rabbitmq官方针对RabbitMQ 3.12的性能测试报告,从报告中可以看到他测试的吞吐量是保持在万级的,延迟时间平均在25毫秒左右,最小延时可以达到微秒级。 另外图中还可以看到在低吞吐量的情况下rabbitmq的延迟速度非常的快&…

【C/C++】“秒懂”学C/C++不可错过的“经典编程题” — 日期类的经典运用 (含题链接)

“秒懂”学C/C不可错过的“经典编程题” — 日期类的经典运用 (含题链接) 1. 计算日期到天数转换(1). 解题思路:(2). 代码实现: 2. 打印日期(1). 解题思路:(2). 代码实现: 3. 日期累加(1). 解题思路:(2). 代…