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

3-提前结束训练

一、核心类

class EarlyStopping:
    # YOLOv5 simple early stopper
    def __init__(self, patience=30):
        self.best_fitness = 0.0  # i.e. mAP
        self.best_epoch = 0
        self.patience = patience or float('inf')  # epochs to wait after fitness stops improving to stop
        self.possible_stop = False  # possible stop may occur next epoch

    def __call__(self, epoch, fitness):#fitness最佳参数,
        if fitness >= self.best_fitness:  # >= 0 to allow for early zero-fitness stage of training
            self.best_epoch = epoch
            self.best_fitness = fitness
        delta = epoch - self.best_epoch  # epochs without improvement 当前epoch与最优epoch的差值,大于patience则提前结束  重点
        self.possible_stop = delta >= (self.patience - 1)  # possible stop may occur next epoch
        stop = delta >= self.patience  # stop training if patience exceeded
        if stop:
            LOGGER.info(f'Stopping training early as no improvement observed in last {self.patience} epochs. '
                        f'Best results observed at epoch {self.best_epoch}, best model saved as best.pt.\n'
                        f'To update EarlyStopping(patience={self.patience}) pass a new patience value, '
                        f'i.e. `python train.py --patience 300` or use `--patience 0` to disable EarlyStopping.')
        return stop

二、创建对象
stopper, stop = EarlyStopping(patience=opt.patience), False

三、提前结束判断

...
    for epoch in range(start_epoch, epochs):  # epoch ------------------------------------------------------------------
        callbacks.run('on_train_epoch_start')
        model.train()
        .....
        #最佳参数判断
		fi = fitness(np.array(results).reshape(1, -1))  # weighted combination of [P, R, mAP@.5, mAP@.5-.95]
        stop = stopper(epoch=epoch, fitness=fi)  # early stop check
		....
		if stop:
            break  # must break all DDP ranks
        

相关文章:

  • 大模型应用: 多模态交互
  • C++ 106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)
  • mac os 使用 root 登录
  • ubuntu22.04系统如何自建2级ntp服务器
  • Uniapp 小程序:语音播放与暂停功能的实现及优化方案
  • 相同的树-
  • 15.5 基于 RetrievalQA 的销售话术增强系统实战:构建智能销售大脑
  • RAG项目实战:金融问答系统
  • 数据存储:使用Python存储数据到redis详解
  • js 获取节点相对于屏幕的坐标位置,获取节点的宽高,获取鼠标事件回调的鼠标位置,计算鼠标相对于某个节点下的坐标
  • 【量化科普】Leverage,杠杆
  • Java中的锁机制:synchronized vs ReentrantLock,如何选择?
  • Python 函数式编程-装饰器
  • css中overflow-x:auto无效
  • 一周学会Flask3 Python Web开发-Jinja2模版中加载静态文件
  • 快速理解Raft分布式共识算法
  • CAS (Compare and swap “比较和交换“) [ Java EE 初阶 ]
  • 【借助深度学习剖析股票数据,实现优质股涨幅预测及推送通知】
  • 用PySpark和PyTorch实现跨境支付Hive数据仓库的反洗钱数据分析
  • python基础学习day01
  • 多条跨境铁路加速推进,谁是下一个“超级枢纽”?
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 科普|“小”耳洞也会引发“大”疙瘩,如何治疗和预防?
  • 傅利叶提出下个十年战略,CEO顾捷:机器人要有温度,要用实际价值来定义形态
  • 印度一战机在巴基斯坦旁遮普省被击落,飞行员被俘
  • 溢价26.3%!保利置业42.4亿元竞得上海杨浦宅地,楼板价80199元/平方米