YOLOV8替换Lion优化器
创始人
2024-11-12 06:11:19
0

YOLOV8替换Lion优化器

1 优化器介绍博客

参考bilibili讲解视频

论文地址:https://arxiv.org/abs/2302.06675

代码地址:https://github.com/google/automl/blob/master/lion/lion_pytorch.py

"""PyTorch implementation of the Lion optimizer.""" import torch from torch.optim.optimizer import Optimizer     class Lion(Optimizer):   r"""Implements Lion algorithm."""     def __init__(self, params, lr=1e-4, betas=(0.9, 0.99), weight_decay=0.0):     """Initialize the hyperparameters.     Args:       params (iterable): iterable of parameters to optimize or dicts defining         parameter groups       lr (float, optional): learning rate (default: 1e-4)       betas (Tuple[float, float], optional): coefficients used for computing         running averages of gradient and its square (default: (0.9, 0.99))       weight_decay (float, optional): weight decay coefficient (default: 0)     """       if not 0.0 <= lr:       raise ValueError('Invalid learning rate: {}'.format(lr))     if not 0.0 <= betas[0] < 1.0:       raise ValueError('Invalid beta parameter at index 0: {}'.format(betas[0]))     if not 0.0 <= betas[1] < 1.0:       raise ValueError('Invalid beta parameter at index 1: {}'.format(betas[1]))     defaults = dict(lr=lr, betas=betas, weight_decay=weight_decay)     super().__init__(params, defaults)     @torch.no_grad()   def step(self, closure=None):     """Performs a single optimization step.     Args:       closure (callable, optional): A closure that reevaluates the model         and returns the loss.     Returns:       the loss.     """     loss = None     if closure is not None:       with torch.enable_grad():         loss = closure()       for group in self.param_groups:       for p in group['params']:         if p.grad is None:           continue           # Perform stepweight decay         p.data.mul_(1 - group['lr'] * group['weight_decay'])           grad = p.grad         state = self.state[p]         # State initialization         if len(state) == 0:           # Exponential moving average of gradient values           state['exp_avg'] = torch.zeros_like(p)           exp_avg = state['exp_avg']         beta1, beta2 = group['betas']           # Weight update         update = exp_avg * beta1 + grad * (1 - beta1)         p.add_(torch.sign(update), alpha=-group['lr'])         # Decay the momentum running average coefficient         exp_avg.mul_(beta2).add_(grad, alpha=1 - beta2)       return loss 

2 在相应的文件夹内新建lion_pytorch.py文件

在这里插入图片描述

3 在trianer.py中添加Lion优化器

在这里插入图片描述

from ultralytics.engine.lion_pytorch import Lion    #Lion optimizer 

然后在末尾build_optimizer函数中添加判断是否使用Lion优化器:
在这里插入图片描述

def build_optimizer(self, model, name="auto", lr=0.001, momentum=0.9, decay=1e-5, iterations=1e5): ·······       elif name == "Lion":         optimizer = Lion(g[2], lr=lr, betas=(momentum, 0.99), weight_decay=0.0) ······· 

4 设置Lion优化器并训练查看

方法1:defalut.yaml中修改默认设置:
在这里插入图片描述
方法2:训练文件中自定义设置:
在这里插入图片描述Lion优化器默认的学习率改为为1e-4,不然就是yolov8中默认的0.01。

运行训练文件后可以看到如下提示则修改成功:
在这里插入图片描述

相关内容

热门资讯

黑科技辅助!wpk辅助神器(透... 黑科技辅助!wpk辅助神器(透视)软件透明辅助挂(本来是真的有挂)-哔哩哔哩是一款可以让一直输的玩家...
5分钟了解“创思维正版辅助器下... 5分钟了解“创思维正版辅助器下载”详细透视开挂辅助安装-哔哩哔哩;一、创思维正版辅助器下载有挂的是的...
两分钟科普!wpk真吗,哈糖大... 两分钟科普!wpk真吗,哈糖大菠萝可以开挂吗,曝光教程(发现有挂)-哔哩哔哩哈糖大菠萝可以开挂吗辅助...
第一分钟了解(昆仑大厅)外挂辅... 第一分钟了解(昆仑大厅)外挂辅助插件(透视)详细教程(2022已更新)(哔哩哔哩);亲真的是有正版授...
黑科技辅助!wpk俱乐部长期盈... 黑科技辅助!wpk俱乐部长期盈利打法(透视)软件透明挂黑科技(切实存在有挂)-哔哩哔哩;1、让任何用...
第6分钟了解“功夫川嘛辅助器”... 第6分钟了解“功夫川嘛辅助器”详细透视开挂辅助器-哔哩哔哩;人气非常高,ai更新快且高清可以动的一个...
第五分钟辅助!xpoker辅助... 第五分钟辅助!xpoker辅助,德州透视插件,攻略教程(有挂方法)-哔哩哔哩德州透视插件辅助器中分为...
两分钟了解(皮皮跑胡子)外挂透... 两分钟了解(皮皮跑胡子)外挂透明挂辅助工具(辅助挂)透明挂教程(2020已更新)(哔哩哔哩);皮皮跑...
黑科技辅助!微扑克可以加入俱乐... 您好,微扑克可以加入俱乐部这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
8分钟了解“掌中乐游戏中心辅助... 8分钟了解“掌中乐游戏中心辅助器”详细透视开挂辅助脚本-哔哩哔哩;1、这是跨平台的掌中乐游戏中心辅助...