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

广西城乡和建设厅网站p2p网站如何做推广

广西城乡和建设厅网站,p2p网站如何做推广,模板网字体库免费,wordpress国外主题安装优化器Optimizer 什么是优化器 pytorch的优化器#xff1a;管理并更新模型中可学习参数的值#xff0c;使得模型输出更接近真实标签 导数#xff1a;函数在指定坐标轴上的变化率 方向导数#xff1a;指定方向上的变化率#xff08;二元及以上函数#xff0c;偏导数管理并更新模型中可学习参数的值使得模型输出更接近真实标签 导数函数在指定坐标轴上的变化率 方向导数指定方向上的变化率二元及以上函数偏导数 梯度一个向量方向是使得方向导数取得最大值的方向 Pytorch的Optimizer 参数 defaults优化器超参数state参数的缓存如momentum的缓存param_groups管理的参数组_step_count记录更新次数学习率调整中使用 基本方法 zero_grad()清空所管理参数的梯度 pytorch特性张量梯度不会自动清零 step()执行一步更新 add_param_group()添加参数组 state_dict()获取优化器当前状态信息字典 load_state_dict()加载状态信息字典 使用代码帮助理解和学习 import os import torch import torch.optim as optimBASE_DIR os.path.dirname(os.path.abspath(__file__))weight torch.randn((2, 2), requires_gradTrue) weight.grad torch.ones((2, 2))# 需要传入一个可迭代对象 optimizer optim.SGD([weight], lr1)print(weight before step:{}.format(weight.data)) optimizer.step() print(weight after step:{}.format(weight.data))weight before step:tensor([[-0.0606, -0.3197],[ 1.4949, -0.8007]]) weight after step:tensor([[-1.0606, -1.3197],[ 0.4949, -1.8007]]) weight weight - lr * weight.grad 上面学习率是1把学习率改为0.1试一下 optimizer optim.SGD([weight], lr0.1)weight before step:tensor([[ 0.3901, 0.2167],[-0.3428, -0.7151]]) weight after step:tensor([[ 0.2901, 0.1167],[-0.4428, -0.8151]])接着上面的代码我们再看一下add_param_group方法 # add_param_group方法 print(optimizer.param_groups is \n{}.format(optimizer.param_groups))w2 torch.randn((3, 3), requires_gradTrue) optimizer.add_param_group({params: w2, lr: 0.0001}) print(optimizer.param_groups is\n{}.format(optimizer.param_groups))optimizer.param_groups is [{params: [tensor([[ 0.1749, -0.2018],[ 0.0080, 0.3517]], requires_gradTrue)], lr: 0.1, momentum: 0, dampening: 0, weight_decay: 0, nesterov: False}]optimizer.param_groups is [{params: [tensor([[ 0.1749, -0.2018],[ 0.0080, 0.3517]], requires_gradTrue)], lr: 0.1, momentum: 0, dampening: 0, weight_decay: 0, nesterov: False}, {params: [tensor([[ 0.4538, -0.8521, -1.3081],[-0.0158, -0.2708, 0.0302],[-0.3751, -0.1052, -0.3030]], requires_gradTrue)], lr: 0.0001, momentum: 0, dampening: 0, weight_decay: 0, nesterov: False}] 关于zero_grad()、step()、state_dict()、load_state_dict()这几个方法比较简单就不再赘述。 SGD随机梯度下降 learning_rate学习率 这里学习率为1可以看到并没有达到梯度下降的效果反而y值越来越大这是因为更新的步伐太大。 我们以y 4*x^2这个函数举例将y值作为要优化的损失值那么梯度下降的过程就是为了找到y的最小值即此函数曲线的最小值如果我们把学习率设置为0.2就可以得到这样一个梯度下降的图 def func(x):return torch.pow(2*x, 2)x torch.tensor([2.], requires_gradTrue) iter_rec, loss_rec, x_rec list(), list(), list() lr 0.2 max_iteration 20for i in range(max_iteration):y func(x)y.backward()print(iter:{}, x:{:8}, x.grad:{:8}, loss:{:10}.format(i, x.detach().numpy()[0], x.grad.detach().numpy()[0], y.item()))x_rec.append(x.item())x.data.sub_(lr * x.grad)x.grad.zero_()iter_rec.append(i)loss_rec.append(y.item())plt.subplot(121).plot(iter_rec, loss_rec, -ro) plt.xlabel(Iteration) plt.ylabel(Loss value)x_t torch.linspace(-3, 3, 100) y func(x_t) plt.subplot(122).plot(x_t.numpy(), y.numpy(), labely 4*x^2) plt.grid()y_rec [func(torch.tensor(i)).item() for i in x_rec] plt.subplot(122).plot(x_rec, y_rec, -ro) plt.legend() plt.show()这里其实存在一个下降速度更快的学习率那就是0.125一步就可以将loss更新为0这是因为我们已经了这个函数表达式而在实际神经网络模型训练的过程中是不知道所谓的函数表达式的所以只能选取一个相对较小的学习率然后以训练更多的迭代次数来达到最优的loss。 动量Momentum又叫冲量 结合当前梯度与上一次更新信息用于当前更新 为什么会出现动量这个概念 当学习率比较小时往往更新比较慢通过引入动量使得后续的更新受到前面更新的影响可以更快的进行梯度下降。 指数加权平均当前时刻的平均值Vt与当前参数值θ和前一时刻的平均值Vt-1的关系。 根据上述公式进行迭代展开因为0β1当前时刻的平均值受越近时刻的影响越大更近的时刻其所占的权重更高越远时刻的影响越小我们可以通过下面作图来看到这一变化。 import numpy as np import matplotlib.pyplot as pltdef exp_w_func(beta, time_list):return [(1-beta) * np.power(beta, exp) for exp in time_list]beta 0.9 num_point 100 time_list np.arange(num_point).tolist()weights exp_w_func(beta, time_list)plt.plot(time_list, weights, -ro, labelBeta: {}\n B * (1-B)^t.format(beta)) plt.xlabel(time) plt.ylabel(weight) plt.legend() plt.title(exponentially weighted average) plt.show()这里β是一个超参数设置不同的值其对于过去时刻的权重计算如下图 beta_list [0.98, 0.95, 0.9, 0.8] w_list [exp_w_func(beta, time_list) for beta in beta_list] for i, w in enumerate(w_list):plt.plot(time_list, w, labelBeta: {}.format(beta_list[i]))plt.xlabel(time)plt.ylabel(weight) plt.legend() plt.show()从图中可以得到这一结论β值越小记忆周期越短β值越大记忆周期越长。 pytorch中带有momentum参数的更新公式 对于y4*x^2这个例子在没有momentum时我们对比学习率分别为0.01和0.03会发现0.03收敛的更快。 如果我们给learning_rate0.01增加momentum参数会发现其可以先一步0.03的学习率到达loss的较小值但是因为动量较大的因素在达到了最小值后还会反弹到一个大的值。 Pytorch中的优化器 optim.SGD 主要参数 params管理的参数组lr学习率momentum动量系数贝塔weight_decayL2正则化系数nesterov是否采用NAG默认False optim.Adagrad自适应学习率梯度下降法 optim.RMSpropAdagrad的改进 optim.AdadeltaAdagrad的改进 optim.AdamRMSprop结合Momentum optim.AdamaxAdam增加学习率上限 optim.SparseAdam稀疏版的Adam optim.ASGD随机平均梯度下降 optim.Rprop弹性反向传播 optim.LBFGSBFGS的改进 学习率调整 前期学习率大后期学习率小 pytorch中调整学习率的基类 class _LRScheduler 主要属性 optimizer关联的优化器last_epoch记录epoch数base_lrs记录初始学习率 主要方法 step()更新下一个epoch的学习率get_lr()虚函数计算下一个epoch的学习率 StepLR 等间隔调整学习率 主要参数 step_size调整间隔数gamma调整系数 调整方式lr lr * gamma import torch import torch.optim as optim import matplotlib.pyplot as pltLR 0.1 iteration 10 max_epoch 200weights torch.randn((1,), requires_gradTrue) target torch.zeros((1, ))optimizer optim.SGD([weights], lrLR, momentum0.9)scheduler_lr optim.lr_scheduler.StepLR(optimizer, step_size50, gamma0.1) # 设置学习率下降策略lr_list, epoch_list list(), list() for epoch in range(max_epoch):lr_list.append(scheduler_lr.get_lr())epoch_list.append(epoch)for i in range(iteration):loss torch.pow((weights-target), 2)loss.backward()optimizer.step()optimizer.zero_grad()scheduler_lr.step()plt.plot(epoch_list, lr_list, labelStep LR Scheduler) plt.xlabel(Epoch) plt.ylabel(Learning Rate) plt.legend() plt.show() MultiStepLR 功能按给定间隔调整学习率 主要参数 milestones设定调整时刻数gamma调整系数 调整方式lr lr * gamma # MultiStepLR milestones [50, 125, 160] scheduler_lr optim.lr_scheduler.MultiStepLR(optimizer, milestonesmilestones, gamma0.1) 只需要改变这里代码其他部分与StepLR中基本一致 ExponentialLR 功能按指数衰减调整学习率 主要参数 gamma指数的底 调整方式lr lr * gamma ** epoch # Exponential LR gamma 0.95 scheduler_lr optim.lr_scheduler.ExponentialLR(optimizer, gammagamma) CosineAnnealingLR 功能余弦周期调整学习率 主要参数 T_max下降周期eta_min学习率下限 调整方式 # CosineAnnealingLR t_max 50 scheduler_lr optim.lr_scheduler.CosineAnnealingLR(optimizer, T_maxt_max, eta_min0) ReduceLRonPlateau 功能监控指标当指标不再变化则调整学习率 主要参数 modemin/max两种模式min观察下降max观察上升factor调整系数patience“耐心”接受几次不变化cooldown“冷却时间”停止监控一段时间verbose是否打印日志min_lr学习率下限eps学习率衰减最小值 # Reduce LR on Plateau loss_value 0.5 accuray 0.9factor 0.1 mode min patience 10 cooldown 10 min_lr 1e-4 verbose Truescheduler_lr optim.lr_scheduler.ReduceLROnPlateau(optimizer, factorfactor, modemode, patiencepatience,cooldowncooldown, min_lrmin_lr, verboseverbose) for epoch in range(max_epoch):for i in range(iteration):optimizer.step()optimizer.zero_grad()# if epoch 5:# loss_value 0.4# 把要监控的指标传进去scheduler_lr.step(loss_value)Epoch 12: reducing learning rate of group 0 to 1.0000e-02. Epoch 33: reducing learning rate of group 0 to 1.0000e-03. Epoch 54: reducing learning rate of group 0 to 1.0000e-04. LambdaLR 功能自定义调整策略 主要参数 lr_lambdafunction or list # lambda LRlr_init 0.1 weights_1 torch.randn((6, 3, 5, 5)) weights_2 torch.ones((5, 5))optimizer optim.SGD([{params: [weights_1]},{params: [weights_2]} ], lrlr_init)lambda1 lambda epoch: 0.1 ** (epoch // 20) lambda2 lambda epoch: 0.95 ** epochscheduler torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda[lambda1, lambda2])lr_list, epoch_list list(), list() for epoch in range(max_epoch):for i in range(iteration):optimizer.step()optimizer.zero_grad()scheduler.step()lr_list.append(scheduler.get_lr())epoch_list.append(epoch)print(epoch: {:5d}, lr:{}.format(epoch, scheduler.get_lr()))
http://www.dnsts.com.cn/news/112428.html

相关文章:

  • 莱阳有网站建设推广的吗什么是网络营销取得成功的基础
  • 个人做的网站不能做淘客建做网站
  • 免费flash网站模板带后台wordpress php 7.0
  • 做精彩网站分析的方向是鹿泉外贸网站建设
  • 青州网站谷歌优化seo
  • 站长工具seo综合查询网四川建设厅官方网站
  • 网站的制作建站人班级网站的规划与建设
  • 网站由哪些部分组成部分组成wordpress怎么让图全屏显示
  • 网站建设需要那些人才网络营销专业好就业吗
  • 网站建设情况的汇报建立网站后怎么维护
  • php网站开发实例电子版建网站相关知识
  • 成都私人做公司网站的哪个网站帮别人做ppt
  • 炫酷网站首页网页设计代码为什么没有颜色
  • 公司做网站需要给百度交钱吗北京网络安全大会
  • 丹东商城网站建设企业门户网站作用
  • 杭州网站制作公司网站邯郸做网站推广多少钱
  • 网站两侧广告代码箱包 东莞网站建设
  • 学校网站建设合同网站 建设 方案
  • 网站的数据库在哪里品牌建设
  • 查看网站国际联网备案号建设一个网站需要什么技术人员
  • 郑州贸网站建设公司wordpress twenty twelve修改
  • 网站设计风格分类永嘉网站建设工作室
  • 乐都网站建设哪家好网站集约化建设讲话稿
  • 静态网页有哪些网站wordpress建立数据库连接时出错
  • 立方米网站泰安房价网二手房出售信息
  • 网站怎么做显得简洁美观wordpress 调用tag标签云
  • 公司网站设计广州创业计划书
  • 网站建设课程设计百度文库800元五合一建站
  • 天津市建设与管理网站网站开发方案目录
  • 福永医院网站建设wordpress主题 笑话