码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • (九)mmdetection源码解读:训练过程中训练数据的调用DataLoader


    目录

    • 一、DataLoader创建过程中
    • 二、利用实例化data_loaders进行训练

    一、DataLoader创建过程中

    在训练过程train_detector函数中调用build_dataloader函数

    train_detector(model, datasets, cfg, distributed=False, validate=True)
    #train_detector函数中
    data_loaders = [
            build_dataloader(
                ds,
                cfg.data.samples_per_gpu,
                cfg.data.workers_per_gpu,
                # `num_gpus` will be ignored if distributed
                num_gpus=len(cfg.gpu_ids),
                dist=distributed,
                seed=cfg.seed,
                runner_type=runner_type,
                persistent_workers=cfg.data.get('persistent_workers', False))
            for ds in dataset
        ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    build_dataloader函数中最关键的步骤就是DataLoader类的实例化
    DataLoader:包括 dataset and sampler, an iterable

    def build_dataloader(dataset,
                         samples_per_gpu,
                         workers_per_gpu,
                         num_gpus=1,
                         dist=True,
                         shuffle=True,
                         seed=None,
                         runner_type='EpochBasedRunner',
                         persistent_workers=False,
                         **kwargs):
       
        data_loader = DataLoader(
            dataset,
            batch_size=batch_size,
            sampler=sampler,
            num_workers=num_workers,
            batch_sampler=batch_sampler,
            collate_fn=partial(collate, samples_per_gpu=samples_per_gpu),
            pin_memory=False,
            worker_init_fn=init_fn,
            **kwargs)
    
        return data_loader
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    可以看到初始化参数里有两种sampler:sampler和batch_sampler,都默认为None。前者的作用是生成一系列的index,而batch_sampler则是将sampler生成的indices打包分组,得到一个又一个batch的index。

    class DataLoader(Generic[T_co]):
      
        def __init__(self, dataset: Dataset[T_co], batch_size: Optional[int] = 1,
                     shuffle: bool = False, sampler: Optional[Sampler[int]] = None,
                     batch_sampler: Optional[Sampler[Sequence[int]]] = None,
                     num_workers: int = 0, collate_fn: _collate_fn_t = None,
                     pin_memory: bool = False, drop_last: bool = False,
                     timeout: float = 0, worker_init_fn: _worker_init_fn_t = None,
                     multiprocessing_context=None, generator=None,
                     *, prefetch_factor: int = 2,
                     persistent_workers: bool = False):
            torch._C._log_api_usage_once("python.data_loader")  # type: ignore
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二、利用实例化data_loaders进行训练

    runner.run(data_loaders, cfg.workflow)
    
    • 1
  • 相关阅读:
    延时中间继电器HJZS-93/220VDC
    【Linux】Vim的使用快捷方式
    最强大脑记忆曲线(4)——关于项目中的全局变量
    超级实用!React-Router v6实现页面级按钮权限
    在受污染的二叉树中查找元素 C++
    Python量化交易实战:获取股票数据并做分析处理
    5个 Istio 访问外部服务流量控制最常用的例子,你知道几个?
    基于卡尔曼滤波实现行人目标跟踪
    Linux启动失败进入dracut 紧急模式处理思路
    一篇学通Axios
  • 原文地址:https://blog.csdn.net/m0_37737957/article/details/132713820
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号