YOLOv9训练不中断,从断点处训练的方法

1. 训练过程中意外中断,未完成训练预期的epoch数量

不小心多开了一个程序,导致程序从98次中断了,想要继续从98开始训练:

将train_dual.py文件中的patser中参数resume,将其设置为default=True:

parser.add_argument('--resume', nargs='?', const=True, default=True, help='resume most recent training')

注意如果想从上一次训练结果中恢复训练,那么保证训练结果(存放在/runs/train目录下)在保存目录中代号为最大的,也就是断点的那次存放的结果是在最后一个文件夹的,断点前训练的设置参数、超参数和每轮训练效果在时间最迟的文件夹下的opt.yaml、hyp.yaml、results.csv中有记录

然后运行train_dual.py:

就可以用继续第98轮了

2.训练完了,但是未收敛,在这个基础上继续训练多一些轮次

不是直接在train_dual.py设置weight参数为训练好的权重(last.pt),然后设置想要继续训练的epoch,这样学习率等超参数启动时还是按照默认的,并不是继续上一轮的训练。

当然如果超参数设置和之前的一样,应该是没有问题的。

如果为了确保准确,修改方式如下:

修改方式:(按步骤进行)

1. 将train_dual.py文件中,epoch参数改成想要原始轮数+继续训练的轮数。比如训练了100轮,还想训练200轮,就改成100+200=300轮,也就是最终要训练300轮。resume设置为default=True

2. 对utils/torch_utils.py中的smart_resume()函数进行更改:

添加一行代码:ckpt[‘epoch’] =100  #原本训练完的epoch
修改代码:start_epoch = ckpt[‘epoch’](后面不加1)
注意:这里的修改是为了断点训练,如果不再需要断点训练,请将修改都还原。

也就是把:

    # start_epoch = ckpt['epoch'] + 1
    # 上面那行改成下面两行
    ckpt['epoch'] =100  # 原本训练完的epoch
    start_epoch = ckpt['epoch']

3. 在train_dual.py文件中,找到opt.cfg, opt.weights, opt.resume

将下面两行代码

        opt = argparse.Namespace(**d)  # replace
        opt.cfg, opt.weights, opt.resume = '', str(last), True  # reinstate

修改成:

        init_epochs = opt.epochs # 记录最开始由epochs参数设定的数值,replace这行代码,将epochs替换成了原始的epochs数值
        opt = argparse.Namespace(**d)  # replace
        # opt.cfg, opt.weights, opt.resume = '', str(last), True  # reinstate
        opt.cfg, opt.weights, opt.resume,opt.epochs = '', str(last), True, init_epochs # reinstate

恢复成设定的epochs,完成以上3步,可以进行继续训练了,python train_dual.py

注意:训练完成之后,不再需要断点训练,请将修改都还原

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

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

相关文章

JavaSE-----认识异常【详解】

目录 一.异常的概念与体系结构: 1.1异常的概念: 1.2一些常见的异常: 1.3异常的体系结构: 1.4异常的分类: 二.异常的处理机制: 2.1 抛出异常: 2.2异常的捕获: 2.3try-catch-&…

相机sd卡照片删除后数据恢复,相机sd卡中的照片被删除后如何恢复数据

当我们使用相机拍摄照片时,有时会不小心删除了一些重要的照片。这可能是因为误操作、SD卡故障或者其他原因。无论是珍贵的照片、还是重要的工作文件,被删除后,我们往往会感到焦虑和失望。相机sd卡中的照片被删除后如何恢复数据?幸…

【Leetcode每日一题】 位运算 - 两整数之和(难度⭐)(37)

1. 题目解析 题目链接:371. 两整数之和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法的核心思路其实可以类比为我们小时候学习的加法运算。只不过这次,我们不是在纸上用铅笔算&#xff…

主干网络篇 | YOLOv8更换主干网络之ShuffleNetV2(包括完整代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。ShuffleNetV2是一种轻量级的神经网络架构,用于图像分类和目标检测任务。它是ShuffleNet的改进版本,旨在提高模型的性能和效率。ShuffleNetV2相比于之前的版本,在保持模型轻量化的同时&am…

THM学习笔记—Simple CTF

nmap扫描,发现2222端口很奇怪啊,重新换一种方式扫描2222端口 发现是ssh 先用ftp试试,尝试匿名登录 下载所有文件 发现只有一个ForMitch.txt,告诉我们其账号密码为弱密码,我们猜测Mitch为其用户名,尝试暴力…

力扣112、113、101--树

112. 路径总和 题目描述: 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。 判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 如果存在,返回 true ;否则&#xff0c…

体系班第十七节(经典递归)

1汉诺塔 从左移到最右,圆盘必须满足小压大原则 写一个大方法,大方法包括两步:第一步将最后一个圆盘上面的所有的放到第二个塔上面,然后将最后一个圆盘放到最后塔上面,再把第二个塔上面圆盘全放在第三个塔上面 #incl…

一文搞懂分布式事务解决方案

前言 在当今的分布式系统中,分布式事务管理是一个关键挑战。在面对跨多个服务的复杂业务流程时,确保数据一致性和事务的原子性变得至关重要。本文将深入探讨分布式事务的概念、原理、实现方式以及在Java领域的应用。 什么是分布式事务 分布式事务是指涉…

leetcode代码记录(动态规划基础题(斐波那契数列)

目录 1. 题目:2. 斐波那契数列:小结: 1. 题目: 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是&#xff1a…

【Spring Boot】创建你的第一个 Spring Boot 应用

创建你的第一个 Spring Boot 应用 1.环境配置2.步骤详解3.项目结构分析3.1 入口类 DemoApplication3.2 控制器 PathVariableController3.3 控制器 BasicController3.4 模型 User 4.运行 Spring Boot 目前已经成为了 Java 开发领域的框架范式。本篇博客,我将带领大家…

c语言:操作符详解(上)

目录 一、操作符的分类二、二进制和进制转换1.2进制转10进制2.10进制转2进制3.2进制转8进制4.2进制转16进制 三、原码、反码、补码四、算术操作符、-、*、/、%1.**和-**2.*3./4.% 五、移位操作符1.左移操作符2.右移操作符 六、位操作符:&、|、^、~七、赋值操作符…

【Linux进程状态】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、直接谈论Linux的进程状态 看看Linux内核源代码怎么说 1.1、R状态 -----> 进程运行的状态 1.2、S状态 -----> 休眠状态(进程在等待“资源”就绪) 1.3、T状…

想兼职赚钱?盘点6个靠谱兼职,赚钱更轻松!

1,微头条搬砖 微头条搬砖是一个门槛不高的赚钱方式,而且不需要你有多么好的原创能力,去收集一些热门文章的素材进行文章伪原创,十分钟就能搞定,只要你的文章有爆点,足够吸人眼球,就能够获取不低…

liunx离线安装mysql

liunx离线安装mysql 一.安装二.添加系统mysql组和mysql用户三.创建并修改mysql数据目录四.修改目录权限五.初始化数据库如果报错关于libaio.so.1六.修改权限为root七.添加启动服务**八.** ***\*登录数据库\**** 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&a…

OpenHarmony 鸿蒙操作系统初体验

一、测试环境 硬件:野火开发板 RK3568 ,LubanCat2-N 系统:OpenHarmony_3.2.3 二、驱动安装 下载驱动 Rockchip_DriverAssitant_v5.1.1,并安装。 安装完成 三、镜像烧录 准备工作 注:仅支持烧录镜像到EMMC&…

Arthas使用案例(二)

说明:记录一次使用Arthas排查测试环境正在运行的项目BUG; 场景 有一个定时任务,该定时任务是定时去拉取某FTP服务器上的文件,进行备份、读取、解析等一系列操作。 而现在,因为开发环境是Windows, 线上项…

代码随想录 -- 回溯算法

文章目录 回溯算法理论什么是回溯法回溯法的效率回溯法解决的问题理解回溯法回溯法模板 组合问题I描述题解优化 组合总和III描述题解 电话号码的字母组合描述题解 组合总和描述题解 组合总和II描述题解 分割回文串描述题解 复原IP地址描述题解 子集描述题解 子集II描述题解 递增…

Linux 学习笔记(16)

十六、 计划任务 在很多时候为了自动化管理系统,我们都会用到计划任务,比如关机,管理,备份之类的操作,我 们都可以使用计划任务来完成,这样可以是管理员的工作量大大降低,而且可靠度更好。 l…

软件测试之学习测试用例的设计(等价类法、边界值法、错误猜测法、场景法、因果图法、正交法)

1. 测试用例的概念 软件测试人员向被测试系统提供的一组数据的集合,包括 测试环境、测试步骤、测试数据、预期结果 2. 为什么在测试前要设计测试用例 测试用例是执行测试的依据 在回归测试的时候可以进行复用 是自动化测试编写测试脚本的依据 衡量需求的覆盖率…

通过简单的案例入门Mybatis~

目录 一.概述 二.JDBC的缺点 三.案例 1.创建测试类 2.加载Mybatis核心配置文件获取SqlSessionFactory 3.获取SqlSession对象 4.执行sql 5.释放资源 一.概述 Mybatis是一款持久层框架,用于简化JDBC开发。所谓框架,就是一个半成品软件,…