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

如何给网站做防盗链直接翻译网页的软件

如何给网站做防盗链,直接翻译网页的软件,能搜任何网站的浏览器,做企业网站费用目录 0. 前言 1. 自调整学习率的常用方法 1.1 ExponentialLR 指数衰减方法 1.2 CosineAnnealingLR 余弦退火方法 1.3 ChainedScheduler 链式方法 2. 实例说明 3. 结果说明 3.1 余弦退火法训练过程 3.2 指数衰减法训练过程 3.3 恒定学习率训练过程 3.4 结果解读 4. …目录 0. 前言 1. 自调整学习率的常用方法 1.1  ExponentialLR 指数衰减方法 1.2 CosineAnnealingLR 余弦退火方法 1.3 ChainedScheduler 链式方法 2. 实例说明 3. 结果说明 3.1 余弦退火法训练过程 3.2 指数衰减法训练过程 3.3 恒定学习率训练过程 3.4 结果解读 4. 完整代码 0. 前言 按照国际惯例首先声明本文只是我自己学习的理解虽然参考了他人的宝贵见解及成果但是内容可能存在不准确的地方。如果发现文中错误希望批评指正共同进步。 本文介绍深度学习训练中经常能使用到的实用技巧——自调整学习率并基于PyTorch框架通过实例进行使用最后对比同样条件下以自调整学习率和固定学习率在模型训练上的表现。 在深度学习模型训练过程中经常会出现损失值不收敛的头疼情况令人怀疑自己设计的网络模型存在不合理或者错误之处但是导致这种情况的真正原因往往非常简单——就是学习率的设定不合理。 这就导致在深度学习模型训练的初期可能需要“摸索”一个比较合适的学习率在后期逐渐细化的过程可能还需要尝试其他的学习率进行“分段训练”。学习率的这种“摸索”费时费力因此自调整学习率的方法应运而生。 1. 自调整学习率的常用方法 自调整学习率是一种通用的方法通过在训练期间动态地更新学习率以使模型更好地收敛提高模型的精确度和稳定性。在PyTorch框架 torch.optim.lr_scheduler 中集成了大量的自调整学习率的方法 lr_scheduler.LambdaLR lr_scheduler.MultiplicativeLR lr_scheduler.StepLR lr_scheduler.MultiStepLR lr_scheduler.ConstantLR lr_scheduler.LinearLR lr_scheduler.ExponentialLR lr_scheduler.PolynomialLR lr_scheduler.CosineAnnealingLR lr_scheduler.ChainedScheduler lr_scheduler.SequentialLR lr_scheduler.ReduceLROnPlateau lr_scheduler.CyclicLR lr_scheduler.OneCycleLR lr_scheduler.CosineAnnealingWarmRestarts 这里具体方法虽然很多但是每种自动调整学习率的策略都比较简单本文仅介绍以下两种常见的方法其余可以查看PyTorch官网说明。 1.1  ExponentialLR 指数衰减方法 这种方法的学习率为 这里有两个参数 初始学习率衰减指数取值范围01一般来说取值要非常接近10.95甚至要0.99否则在动辄几百几千的迭代次数epoch条件下学习率很快会衰减到0 PyTorch调用代码为 torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch) optimizer训练该模型的优化算法gamma上面的衰减指数last_epoch不用理会默认-1即可 1.2 CosineAnnealingLR 余弦退火方法 首先我要吐槽下不知道是哪个大聪明给起的这个名字我学过《机械加工原理与工艺》但我不明白这个算法和退火有什么关系名字非常唬人方法并不复杂。 这个方法就是让学习率按余弦曲线进行震荡其震荡范围为[0, lr_initial]震荡周期为T_max PyTorch调用代码为 torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, last_epoch) 其参数同上说明不再赘述。 1.3 ChainedScheduler 链式方法 这个方法说白了就是多种自调节学习率方法进行组合使用例如以下 scheduler1 ConstantLR(self.opt, factor0.1, total_iters2) scheduler2 ExponentialLR(self.opt, gamma0.9) scheduler ChainedScheduler([scheduler1, scheduler2]) 最后再强调一下无论使用哪种方法在coding时别忘了每个epoch学习后加上 scheduler.step() 这样才能更新学习率。 2. 实例说明 本文目的是验证自调节学习率的作用选用一个简单的“平方网络”实例即期望输出为输入值的平方。 训练输入数据x_train输出数据y_train分别为 x_train torch.tensor([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1],dtypetorch.float32).unsqueeze(-1) y_train torch.tensor([0.01,0.04,0.09,0.16,0.25,0.36,0.49,0.64,0.81,1],dtypetorch.float32).unsqueeze(-1) 验证输入数据x_val为 x_val torch.tensor([0.15,0.25,0.35,0.45,0.55,0.65,0.75,0.85,0.95],dtypetorch.float32).unsqueeze(-1) 网络模型使用5层全连接网络对应这种简单问题足够用了 class Linear(torch.nn.Module):def __init__(self):super().__init__()self.layers torch.nn.Sequential(torch.nn.Linear(in_features1, out_features3),torch.nn.Sigmoid(),torch.nn.Linear(in_features3,out_features5),torch.nn.Sigmoid(),torch.nn.Linear(in_features5, out_features10),torch.nn.Sigmoid(),torch.nn.Linear(in_features10,out_features5),torch.nn.Sigmoid(),torch.nn.Linear(in_features5, out_features1),torch.nn.ReLU(),) 优化器选用Adam训练组及验证组的损失函数都选用MSE均方差。 3. 结果说明 对于本文对比的三种方法其训练参数设定如下表 学习率调整方法训练参数设定指数衰减迭代次数epoch2000初始学习率initial_lr0.0005衰减指数gamma0.99995余弦退火迭代次数epoch2000初始学习率initial_lr0.001因为学习率均值为初始值的一半公平起见给余弦退火方法初始学习率*2震荡周期T_max200恒定学习率学习率lr0.0005 各种方法的训练过程如下图 3.1 余弦退火法训练过程 3.2 指数衰减法训练过程 3.3 恒定学习率训练过程 3.4 结果解读 指数衰减方法的gamma真的要选择非常接近1才行理由我上面也解释了下面是gamma0.999时的loss下降情况可见其下降速度之慢 本实例中使用余弦退火方法训练的模型在验证组表现最好验证组损失值val0.0027其次是指数衰减法val0.0037最差是恒定学习率val0.0053但这个结果仅限本实例中并不是说哪种方法就比哪种方法好在不同模型上可能要因地制宜选择合适的方法目前这些所谓的“自调节学习率”我认为仅能算是“半自动调节”因为仍有超参数需要事前设定例如衰减指数gamma。而选择哪种方法最好以及这种方法的参数如何设定呢可能还是需要做一定的“摸索”但是相比恒定学习率肯定会节省很多时间 4. 完整代码 import torch import matplotlib.pyplot as plt from tqdm import tqdm import argparsetorch.manual_seed(25)x_train torch.tensor([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1],dtypetorch.float32).unsqueeze(-1) y_train torch.tensor([0.01,0.04,0.09,0.16,0.25,0.36,0.49,0.64,0.81,1],dtypetorch.float32).unsqueeze(-1) x_val torch.tensor([0.15,0.25,0.35,0.45,0.55,0.65,0.75,0.85,0.95],dtypetorch.float32).unsqueeze(-1)class Linear(torch.nn.Module):def __init__(self):super().__init__()self.layers torch.nn.Sequential(torch.nn.Linear(in_features1, out_features3),torch.nn.Sigmoid(),torch.nn.Linear(in_features3,out_features5),torch.nn.Sigmoid(),torch.nn.Linear(in_features5, out_features10),torch.nn.Sigmoid(),torch.nn.Linear(in_features10,out_features5),torch.nn.Sigmoid(),torch.nn.Linear(in_features5, out_features1),torch.nn.ReLU(),)def forward(self,x):return self.layers(x)criterion torch.nn.MSELoss()def train_with_CosinAnneal(epoch, initial_lr, T_max):linear1 Linear()opt torch.optim.Adam(linear1.parameters(), lrinitial_lr)scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizeropt, T_maxT_max, last_epoch-1)last_epoch_loss 0for i in tqdm(range(epoch)):opt.zero_grad()total_loss 0for j in range(len(x_train)):output linear1(x_train[j])loss criterion(output,y_train[j])total_loss total_loss loss.detach()loss.backward()opt.step()if i epoch-1:last_epoch_loss total_lossscheduler.step()cur_lr scheduler.get_lr() #查看学习率变化情况# plt.scatter(i, cur_lr, s2, cg) plt.scatter(i, total_loss,s2,cr)val 0for x in x_val:val val ((linear1(x) - x * x) / x * x)**2plt.title(CosinAnneal---val%f---last_epoch_loss%f%(val,last_epoch_loss))plt.xlabel(epoch)plt.ylabel(loss)plt.show()def train_with_ExponentialLR(epoch, initial_lr, gamma):linear2 Linear()opt torch.optim.Adam(linear2.parameters(), lrinitial_lr)scheduler torch.optim.lr_scheduler.ExponentialLR(optimizeropt, gammagamma, last_epoch-1)last_epoch_loss 0for i in tqdm(range(epoch)):opt.zero_grad()total_loss 0for j in range(len(x_train)):output linear2(x_train[j])loss criterion(output,y_train[j])total_loss total_loss loss.detach()loss.backward()opt.step()if i epoch-1:last_epoch_loss total_lossscheduler.step()cur_lr scheduler.get_lr()# plt.scatter(i, cur_lr, s2, cg)plt.scatter(i, total_loss,s2,cg)val 0for x in x_val:val val ((linear2(x) - x * x) / x * x)**2plt.title(ExponentialLR---val%f---last_epoch_loss%f%(val,last_epoch_loss))plt.xlabel(epoch)plt.ylabel(loss)plt.show()def train_without_lr_scheduler(epoch, initial_lr):linear3 Linear()opt torch.optim.Adam(linear3.parameters(), lrinitial_lr)last_epoch_loss 0for i in tqdm(range(epoch)):opt.zero_grad()total_loss 0for j in range(len(x_train)):output linear3(x_train[j])loss criterion(output, y_train[j])total_loss total_loss loss.detach()loss.backward()opt.step()if i epoch-1:last_epoch_loss total_lossplt.scatter(i, total_loss, s2, cb)val 0for x in x_val:val val ((linear3(x) - x * x) / x * x)**2plt.title(without_lr_scheduler---val%f---last_epoch_loss%f%(val,last_epoch_loss))plt.xlabel(epoch)plt.ylabel(loss)plt.show()if __name__ __main__ :epoch 2000initial_lr 0.0005gamma 0.99995T_max 200Cosine_Anneal_args [epoch,initial_lr*2,T_max]train_with_CosinAnneal(*Cosine_Anneal_args)# ExponentialLR_args [epoch, initial_lr, gamma]# train_with_ExponentialLR(*ExponentialLR_args)## without_scheduler_args [epoch, initial_lr]# train_without_lr_scheduler(*without_scheduler_args)
http://www.yutouwan.com/news/497119/

相关文章:

  • 企业网站建设内容 程序开发长春建站怎么做
  • 网站中文名注册视频解析网站制作
  • 企业网站策划书范文3000字中国建筑业协会官方网站
  • 江苏鑫圣建设工程有限公司网站网站收录平台
  • 樟木头镇网站仿做最近几天的新闻
  • 手机网站可以做百度商桥吗php开源cms
  • 24小时精准天气预报seo职位信息
  • 做美妆网站名称wordpress个性404
  • 郑州公司网站建设中小企业网站构建设计
  • 东营网站建设费用佛山做网站公司哪家好
  • 做打折的淘宝小卖家的网站网站水印设置作教程
  • 热 综合-网站正在建设中-手机版新媒体运营工作是什么
  • 重庆公司网站开发wordpress添加网易云音乐播放器
  • 网站网址有哪些知乎 php网站开发书籍_
  • 网站 建设设计什么网站有项目做
  • 武冈做网站网站代码怎么看
  • 合肥网站建设q479185700強官方网站怎么查询
  • 廊坊网站建设冀icp备wordpress 4.7.1
  • 长春做网站选长春万网音乐网站建设成本
  • 玉树电子商务网站建设哪家好wordpress+怎么迁移
  • 天津市住房和城乡建设局网站海南省住房城乡建设厅网站首页
  • 怎么做一购物网站WordPress网站hym地图
  • 医药网站建设需要注意点企业网站建设合同书标准版
  • 长春建一个网站大概要多少钱wordpress 鼠标 效果
  • 织梦cms发布侵权网站清单58同城网站建设思路
  • php零基础做网站森动网网站建设好吗
  • 网站前期建设建筑专业律师事务所
  • 网站 多服务器浙江杭州下沙做网站
  • 公共部门网站建设维护龙泉市住房和城乡建设局网站
  • 怎么做网站的关键词库大数据专业主要学什么