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

没有官方网站怎么做seo优化军事新闻

没有官方网站怎么做seo优化,军事新闻,如何使用上线了app建设网站,建手机网站一年费用学习率衰减#xff0c;通常我们英文也叫做scheduler。本文学习率衰减自定义#xff0c;通过2种方法实现自定义#xff0c;一是利用lambda#xff0c;另外一个是继承pytorch的lr_scheduler import math import matplotlib.pyplot as plt import numpy as np import torch i…学习率衰减通常我们英文也叫做scheduler。本文学习率衰减自定义通过2种方法实现自定义一是利用lambda另外一个是继承pytorch的lr_scheduler import math import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn from torch.optim import * from torchvision import modelsclass Net(nn.Module):def __init__(self):super(Net,self).__init__()self.fc nn.Linear(1, 10)def forward(self,x):return self.fc(x)余弦退火 当T_max20 lrs [] model Net() LR 0.01 epochs 100 optimizer Adam(model.parameters(),lr LR) scheduler lr_scheduler.CosineAnnealingLR(optimizer, T_max20, eta_min1e-9) for epoch in range(epochs): optimizer.step()lrs.append(optimizer.state_dict()[param_groups][0][lr])scheduler.step()plt.figure(figsize(10, 6)) plt.plot(lrs, colorr) plt.text(0, lrs[0], str(lrs[0])) plt.text(epochs, lrs[-1], str(lrs[-1])) plt.show()当T_max epochs这就是我们经常用到的弦退火的 scheduler下面再来看看带Warm-up的 lrs [] model Net() LR 0.01 epochs 100 optimizer Adam(model.parameters(),lr LR) scheduler lr_scheduler.CosineAnnealingLR(optimizer, T_maxepochs, eta_min1e-9) for epoch in range(epochs): optimizer.step()lrs.append(optimizer.state_dict()[param_groups][0][lr])scheduler.step()plt.figure(figsize(10, 6)) plt.plot(lrs, colorr) plt.text(0, lrs[0], str(lrs[0])) plt.text(epochs, lrs[-1], str(lrs[-1])) plt.show()WarmUp 下面来看看 Pytorch定义的余弦退货的公式如下 ηtηmin12(ηmax−ηmin)(1cos⁡(TcurTmaxπ)),Tcur≠(2k1)Tmax;ηt1ηt12(ηmax−ηmin)(1−cos⁡(1Tmaxπ)),Tcur(2k1)Tmax.\begin{aligned} \eta_t \eta_{min} \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 \cos\left(\frac{T_{cur}}{T_{max}}\pi\right)\right), T_{cur} \neq (2k1)T_{max}; \\ \eta_{t1} \eta_{t} \frac{1}{2}(\eta_{max} - \eta_{min}) \left(1 - \cos\left(\frac{1}{T_{max}}\pi\right)\right), T_{cur} (2k1)T_{max}. \end{aligned}ηt​ηt1​​ηmin​21​(ηmax​−ηmin​)(1cos(Tmax​Tcur​​π)),ηt​21​(ηmax​−ηmin​)(1−cos(Tmax​1​π)),​Tcur​​(2k1)Tmax​;Tcur​(2k1)Tmax​.​ 实际上是用下面的公式做为更新的, 当TcurTmaxT_{cur} T_{max}Tcur​Tmax​是coscoscos部分为0所以就等于ηmin\eta_{min}ηmin​ ηtηmin12(ηmax−ηmin)(1cos⁡(TcurTmaxπ))\eta_t \eta_{min} \frac{1}{2}(\eta_{max} - \eta_{min})\left(1 \cos\left(\frac{T_{cur}}{T_{max}}\pi\right)\right)ηt​ηmin​21​(ηmax​−ηmin​)(1cos(Tmax​Tcur​​π)) 这里直接根据公式的定义来画个图看看 etas [] epochs 100 eta_max 1e-4 eta_min 1e-9 t_max epochs / 1 for i in range(epoch):t_cur ieta eta_min 0.5 * (eta_max - eta_min) * (1 np.cos(np.pi * t_cur / t_max))etas.append(eta)plt.figure(figsize(10, 6)) plt.plot(range(len(etas)), etas, colorr) plt.text(epochs, lrs[-1], str(lrs[-1])) plt.show()从图上来看跟上面的余弦退化是一样的眼尖的都会发现lr_min 不等于eta_min1e-9 利用Lambda来定义的 有个较小的bug也不算在description里有指出 def warm_up_cosine_lr_scheduler(optimizer, epochs100, warm_up_epochs5, eta_min1e-9):Description:- Warm up cosin learning rate scheduler, first epoch lr is too smallArguments:- optimizer: input optimizer for the training- epochs: int, total epochs for your training, default is 100. NOTE: you should pass correct epochs for your training- warm_up_epochs: int, default is 5, which mean the lr will be warm up for 5 epochs. if warm_up_epochs0, means no needto warn up, will be as cosine lr scheduler- eta_min: float, setup ConsinAnnealingLR eta_min while warm_up_epochs 0Returns:- schedulerif warm_up_epochs 0:scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_maxepochs, eta_mineta_min)else:warm_up_with_cosine_lr lambda epoch: eta_min (epoch / warm_up_epochs) if epoch warm_up_epochs else 0.5 * (np.cos((epoch - warm_up_epochs) / (epochs - warm_up_epochs) * np.pi) 1)scheduler torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambdawarm_up_with_cosine_lr)return scheduler# warm up consin lr scheduler lrs [] model Net() LR 1e-4 warm_up_epochs 30 epochs 100 optimizer SGD(model.parameters(), lrLR)scheduler warm_up_cosine_lr_scheduler(optimizer, warm_up_epochswarm_up_epochs, eta_min1e-9)for epoch in range(epochs):optimizer.step()lrs.append(optimizer.state_dict()[param_groups][0][lr])scheduler.step()plt.figure(figsize(10, 6)) ![请添加图片描述](https://img-blog.csdnimg.cn/566b2c036b4a44598ae2a5a0548f2550.png?x-oss-processimage/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAamFzbmVpaw,size_20,color_FFFFFF,t_70,g_se,x_16)plt.plot(lrs, colorr) plt.text(0, lrs[0], str(lrs[0])) plt.text(epochs, lrs[-1], str(lrs[-1])) plt.show()从图上看第一个lr非常非常小导致训练时的第一个epoch基本上不更新 继承lr_scheduler的类 class WarmupCosineLR(lr_scheduler._LRScheduler):def __init__(self, optimizer, lr_min, lr_max, warm_up0, T_max10, start_ratio0.1):Description:- get warmup consine lr schedulerArguments:- optimizer: (torch.optim.*), torch optimizer- lr_min: (float), minimum learning rate- lr_max: (float), maximum learning rate- warm_up: (int), warm_up epoch or iteration- T_max: (int), maximum epoch or iteration- start_ratio: (float), to control epoch 0 lr, if ratio0, then epoch 0 lr is lr_minExample: epochs 100 warm_up 5 cosine_lr WarmupCosineLR(optimizer, 1e-9, 1e-3, warm_up, epochs) lrs [] for epoch in range(epochs): optimizer.step() lrs.append(optimizer.state_dict()[param_groups][0][lr]) cosine_lr.step() plt.plot(lrs, colorr) plt.show()self.lr_min lr_minself.lr_max lr_maxself.warm_up warm_upself.T_max T_maxself.start_ratio start_ratioself.cur 0 # current epoch or iterationsuper().__init__(optimizer, -1)def get_lr(self):if (self.warm_up 0) (self.cur 0):lr self.lr_maxelif (self.warm_up ! 0) (self.cur self.warm_up):if self.cur 0:lr self.lr_min (self.lr_max - self.lr_min) * (self.cur self.start_ratio) / self.warm_upelse:lr self.lr_min (self.lr_max - self.lr_min) * (self.cur) / self.warm_up# print(f{self.cur} - {lr})else: # this works finelr self.lr_min (self.lr_max - self.lr_min) * 0.5 *\(np.cos((self.cur - self.warm_up) / (self.T_max - self.warm_up) * np.pi) 1)self.cur 1return [lr for base_lr in self.base_lrs]# class epochs 100 warm_up 5 cosine_lr WarmupCosineLR(optimizer, 1e-9, 1e-3, warm_up, epochs, 0.1) lrs [] for epoch in range(epochs):optimizer.step()lrs.append(optimizer.state_dict()[param_groups][0][lr])cosine_lr.step()plt.figure(figsize(10, 6)) plt.plot(lrs, colorr) plt.text(0, lrs[0], str(lrs[0])) plt.text(epochs, lrs[-1], str(lrs[-1])) plt.show()从图上看出第一个epoch的lr也不至于非常非常小了达到了所需预期当然如果你说first epoch的lr你也需要非常非常小(1e-8)你也可以自己尝试其它值。
http://www.zqtcl.cn/news/837833/

相关文章:

  • 在招聘网站做销售技巧教育培训平台
  • 网站栏目 英文做网站在哪接单
  • 湖北网络营销网站市场营销策划案
  • 政务信息系统网站建设规范上海网站开发制作公司
  • 网站公众平台建设方案湖南seo优化报价
  • 企业网站制作公司discuz 转wordpress
  • 可信网站是什么意思应用软件开发平台
  • 上海市官方网站福建省中嘉建设工程有限公司网站
  • 备案之后怎样把 放到网站上大连建设网球场价格
  • dkp网站开发今天最新新闻
  • 山东省环保厅官方网站建设项目东莞寮步网站设计
  • 网站开发可能遇到的问题附近电脑培训班位置
  • 如何查看域名以前是做什么网站的网站索引下降如何解决
  • 潜江 网站建设扬中话
  • 网站建设项目方案ppt广州建站模板平台
  • 房产部门成立网站免费seo推广软件
  • python做网站好处百度指数分析报告
  • 网站建设挣钱班级介绍网页制作模板
  • 工作室 网站建设app公司
  • 自己做的网站怎么在百度搜索到网页制作论文3000字
  • 如何网站托管中国跨境电商平台有多少
  • 手机p2p网站做平面设计兼职的网站有哪些
  • 贵金属网站建设唐山网站制作工具
  • 网站入门成都网站制作沈阳
  • 接做网站单子的网站做网站要会那些ps
  • 做盗市相关网站wordpress速度优化简书
  • 贵阳手机网站建设公司国内永久免费云服务器
  • 温州做网站定制哪家网络推广公司好
  • 招聘网站怎么做线下活动网站后台管理系统怎么开发
  • 西湖区外贸网站建设商梦建站