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

微网站开发周期标签云小工具 wordpress nofollow

微网站开发周期,标签云小工具 wordpress nofollow,怎么制作网站上传视频,wordpress页面排版插件AdaGrad算法 在一般的优化算法中#xff0c;目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。 例如#xff0c;假设目标函数为fff#xff0c;自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1​,x2​]⊤#xff0c;该向量中每一个元素在迭代时都使…AdaGrad算法 在一般的优化算法中目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。 例如假设目标函数为fff自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1​,x2​]⊤该向量中每一个元素在迭代时都使用相同的学习率。 例如在学习率为η\etaη的梯度下降中元素x1x_1x1​和x2x_2x2​都使用相同的学习率η\etaη来自我迭代 x1←x1−η∂f∂x1,x2←x2−η∂f∂x2.x_1 \leftarrow x_1 - \eta \frac{\partial{f}}{\partial{x_1}}, \quad x_2 \leftarrow x_2 - \eta \frac{\partial{f}}{\partial{x_2}}. x1​←x1​−η∂x1​∂f​,x2​←x2​−η∂x2​∂f​. 在动量法里我们看到当x1x_1x1​和x2x_2x2​的梯度值有较大差别时需要选择足够小的学习率使得自变量在梯度值较大的维度上不发散。但这样会导致自变量在梯度值较小的维度上迭代过慢。动量法依赖指数加权移动平均使得自变量的更新方向更加一致从而降低发散的可能。 而AdaGrad算法根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率从而避免统一的学习率难以适应所有维度的问题。 算法内容 AdaGrad算法会使用一个小批量随机梯度gt\boldsymbol{g}_tgt​按元素平方的累加变量st\boldsymbol{s}_tst​。 在时间步0AdaGrad将s0\boldsymbol{s}_0s0​中每个元素初始化为0在时间步ttt首先将小批量随机梯度gt\boldsymbol{g}_tgt​按元素平方后累加到变量st\boldsymbol{s}_tst​ st←st−1gt⊙gt,\boldsymbol{s}_t \leftarrow \boldsymbol{s}_{t-1} \boldsymbol{g}_t \odot \boldsymbol{g}_t,st​←st−1​gt​⊙gt​, 其中⊙\odot⊙是按元素相乘。接着我们将目标函数自变量中每个元素的学习率通过按元素运算重新调整一下 xt←xt−1−ηstϵ⊙gt,\boldsymbol{x}_t \leftarrow \boldsymbol{x}_{t-1} - \frac{\eta}{\sqrt{\boldsymbol{s}_t \epsilon}} \odot \boldsymbol{g}_t,xt​←xt−1​−st​ϵ​η​⊙gt​, 其中η\etaη是学习率ϵ\epsilonϵ是为了维持数值稳定性而添加的常数如10−610^{-6}10−6。这里开方、除法和乘法的运算都是按元素运算的。这些按元素运算使得目标函数自变量中每个元素都分别拥有自己的学习率。 小批量随机梯度按元素平方的累加变量st\boldsymbol{s}_tst​出现在学习率的分母项中。因此 如果目标函数有关自变量中某个元素的偏导数一直都较大那么该元素的学习率将下降较快反之如果目标函数有关自变量中某个元素的偏导数一直都较小那么该元素的学习率将下降较慢。 然而由于st\boldsymbol{s}_tst​一直在累加按元素平方的梯度自变量中每个元素的学习率在迭代过程中一直在降低或不变。所以当学习率在迭代早期降得较快且当前解依然不佳时AdaGrad算法在迭代后期由于学习率过小可能较难找到一个有用的解。 例 目标函数f(x)0.1x122x22f(\boldsymbol{x})0.1x_1^22x_2^2f(x)0.1x12​2x22​学习率0.4 from matplotlib import pyplot as pltdef show_trace_2d(f, results): plt.plot(*zip(*results), -o, color#ff7f0e)x1, x2 np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))plt.contour(x1, x2, f(x1, x2), colors#1f77b4)plt.xlabel(x1)plt.ylabel(x2)def train_2d(trainer): x1, x2, s1, s2 -5, -2, 0, 0 # s1和s2是自变量状态本章后续几节会使用results [(x1, x2)]for i in range(20):x1, x2, s1, s2 trainer(x1, x2, s1, s2)results.append((x1, x2))print(epoch %d, x1 %f, x2 %f % (i 1, x1, x2))return results%matplotlib inline import math import torchdef adagrad_2d(x1, x2, s1, s2):g1, g2, eps 0.2 * x1, 4 * x2, 1e-6 # 前两项为自变量梯度s1 g1 ** 2s2 g2 ** 2x1 - eta / math.sqrt(s1 eps) * g1x2 - eta / math.sqrt(s2 eps) * g2return x1, x2, s1, s2def f_2d(x1, x2):return 0.1 * x1 ** 2 2 * x2 ** 2eta 0.4 show_trace_2d(f_2d, train_2d(adagrad_2d))可以看到自变量的迭代轨迹较平滑。但由于st\boldsymbol{s}_tst​的累加效果使学习率不断衰减自变量在迭代后期的移动幅度较小。 将学习率增大到2。可以看到自变量更为迅速地逼近了最优解。 eta 2 show_trace_2d(f_2d, train_2d(adagrad_2d))实现AdaGrad算法 def get_data_ch7(): data np.genfromtxt(data/airfoil_self_noise.dat, delimiter\t)data (data - data.mean(axis0)) / data.std(axis0)return torch.tensor(data[:1500, :-1], dtypetorch.float32), \torch.tensor(data[:1500, -1], dtypetorch.float32) # 前1500个样本(每个样本5个特征)features, labels get_data_ch7()def init_adagrad_states():s_w torch.zeros((features.shape[1], 1), dtypetorch.float32)s_b torch.zeros(1, dtypetorch.float32)return (s_w, s_b)def adagrad(params, states, hyperparams):eps 1e-6for p, s in zip(params, states):s.data (p.grad.data**2)p.data - hyperparams[lr] * p.grad.data / torch.sqrt(s eps)def train_ch7(optimizer_fn, states, hyperparams, features, labels,batch_size10, num_epochs2):# 初始化模型net, loss linreg, squared_lossw torch.nn.Parameter(torch.tensor(np.random.normal(0, 0.01, size(features.shape[1], 1)), dtypetorch.float32),requires_gradTrue)b torch.nn.Parameter(torch.zeros(1, dtypetorch.float32), requires_gradTrue)def eval_loss():return loss(net(features, w, b), labels).mean().item()ls [eval_loss()]data_iter torch.utils.data.DataLoader(torch.utils.data.TensorDataset(features, labels), batch_size, shuffleTrue)for _ in range(num_epochs):start time.time()for batch_i, (X, y) in enumerate(data_iter):l loss(net(X, w, b), y).mean() # 使用平均损失# 梯度清零if w.grad is not None:w.grad.data.zero_()b.grad.data.zero_()l.backward()optimizer_fn([w, b], states, hyperparams) # 迭代模型参数if (batch_i 1) * batch_size % 100 0:ls.append(eval_loss()) # 每100个样本记录下当前训练误差# 打印结果和作图print(loss: %f, %f sec per epoch % (ls[-1], time.time() - start))set_figsize()plt.plot(np.linspace(0, num_epochs, len(ls)), ls)plt.xlabel(epoch)plt.ylabel(loss)train_ch7(adagrad, init_adagrad_states(), {lr: 0.1}, features, labels)也可以使用pytorch内置的optim.Adagrad实现AdaGrad优化器 train_pytorch_ch7(torch.optim.Adagrad, {lr: 0.1}, features, labels)
http://www.pierceye.com/news/40784/

相关文章:

  • 高权重网站做js代码跳转设计网站页面要怎么切图
  • 四平网站制作制作钓鱼网站的费用
  • 网站建设全做任务反佣金的网站
  • 网站集群建设相关的招标品牌网站建设网站
  • 新乐市建设银行网站建设网站需要购买哪些
  • 淄博 网站设计中铁建设集团官网登录
  • 住房和城乡建设部网站倪虹修改wordpress自带小工具
  • 展厅设计公司网站淘宝联盟推广做网站违法
  • 用路由器做简单的网站哪有网站建设明细报价表
  • 佛山网站设计制作公司做服装网站需要什么
  • 广告门网站seo排名优化培训价格
  • 网站搭建北京做网站要注意什么
  • 六年级上册如何做网站湖北外贸网站建设费用
  • 网站建设推广方式怎么优化网站关键词排名
  • 如何做明星的个人网站闵行区最新消息
  • 勐海县城乡建设局门户网站百度关键词搜索趋势
  • 织梦做的网站织梦修改网页做暧暧网站免费
  • 三沙网站建设西安seo交流
  • 微网站 html深圳出行最新消息
  • 宁波市国家高新区建设局网站网站百度一直没有收录
  • 河南龙王建设集团网站电脑培训班价目表
  • 开发网站网络公司有哪些平面设计学徒工资一般多少
  • 路南网站建设成都网站关键字优化
  • 学ui的网站广州网站定制多少钱
  • 网站后台 二级域名wordpress文章 404
  • 西安网站开发公司哪家强天眼企业信息查询系统官网
  • 为什么要建微信网站物业管理系统app
  • 毕业设计做网站题目重庆做网站公司哪家比较好
  • 柳州学校网站建设网站在vps能访问 在本地访问不了
  • 公司自建网站备案免费制作贺卡的app