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

网站优化宝云游戏免费平台

网站优化宝,云游戏免费平台,广西棋牌软件开发公司,校园图书馆网站建设前一篇文章#xff0c;深度学习里面的而优化函数 Adam#xff0c;SGD#xff0c;动量法#xff0c;AdaGrad 等 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课#xff1a;引…前一篇文章深度学习里面的而优化函数 AdamSGD动量法AdaGrad 等 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课引领人工智能新时代【梗直哥瞿炜】 PyTorch 学习率调整策略 常见的学习率调节器学习率衰减指数衰减余弦学习率调节预热 示例程序执行结果没有使用学习率自动调节时使用了学习率自动调节结论 常见学习率调节器Links 常见的学习率调节器 学习率衰减 指数衰减 余弦学习率调节 实现学习率循环降低或升高的效果 预热 示例程序 下面以指数衰减调节器ExponentialLR为例子展示同样的数据条件下不衰减学习率和衰减学习率两种情况下损失函数loss的收敛情况。 import torch torch.manual_seed(777) Learning rate schedulerimport matplotlib.pyplot as plt import numpy as np import torch.nn as nn from torch.utils.data import DataLoader, TensorDataset # 构造数据集加载器 from torch.utils.data import random_split # 划分数据集torch.manual_seed(777)# for reproducibility为了重复使用############################ # 生成数据 ############################# 定义函数 def f(x,y):return x**2 2*y**2# 定义初始值 num_samples 1000 # 1000 个样本点 X torch.rand(num_samples) # 均匀分布 Y torch.rand(num_samples) Z f(X,Y) 3 * torch.randn(num_samples)# Concatenates a sequence of tensors along a new dimension. # All tensors need to be of the same size. # https://pytorch.org/docs/stable/generated/torch.stack.html dataset torch.stack([X,Y,Z], dim1) # print(dataset.shape) # torch.Size([1000, 3])# split data, 按照 7:3 划分数据集 train_size int(0.7 * len(dataset)) test_size len(dataset) - train_sizetrain_dataset, test_dataset random_split(datasetdataset, lengths[train_size, test_size])# 将数据封装为数据加载器 # narrow 函数对数据进行切片操作 # train_dataloader DataLoader(TensorDataset(train_dataset.dataset.narrow(1,0,2), train_dataset.dataset.narrow(1,2,1)), batch_size32, shuffleFalse) test_dataloader DataLoader(TensorDataset(test_dataset.dataset.narrow(1,0,2), test_dataset.dataset.narrow(1,2,1)), batch_size32, shuffleFalse)############################ # 模型定义 ############################# 定义一个简单的模型 class Model(nn.Module):def __init__(self):super().__init__()self.hidden nn.Linear(2, 8)self.output nn.Linear(8, 1)def forward(self, x):x torch.relu(self.hidden(x))return self.output(x)############################ # 模型训练 ############################# 超参数 num_epochs 100 learning_rate 0.1 # 学习率调大一些更直观# 定义损失函数 loss_fn nn.MSELoss()# 通过两次训练对比有无调节器的效果 for with_scheduler in [False, True]:# 定义训练和测试误差数组train_losses []test_losses []# 初始化模型model Model()# 定义优化器optimizer torch.optim.SGD(model.parameters(), lr learning_rate)# 定义学习率调节器scheduler torch.optim.lr_scheduler.ExponentialLR(optimizeroptimizer, gamma0.99)# 迭代训练for epoch in range(num_epochs):# 设定模型工作在训练模式model.train()train_loss 0# 遍历训练集for inputs, targets in train_dataloader:# 预测、损失函数、反向传播optimizer.zero_grad()outputs model(inputs)loss loss_fn(outputs, targets)loss.backward()optimizer.step()# 记录 losstrain_loss loss.item()# 计算 loss 并记录到训练误差train_loss / len(train_dataloader)train_losses.append(train_loss)# 在测试数据集上评估model.eval()test_loss 0with torch.no_grad():# 遍历测试集for inputs, targets in test_dataloader:# 预测、损失函数outputs model(inputs)loss loss_fn(outputs, targets)# 记录 losstest_loss loss.item()# 计算 loss 并记录到测试误差test_loss / len(test_dataloader)test_losses.append(test_loss)# 是否更新学习率if with_scheduler:scheduler.step()# 绘制训练和测试误差曲线plt.figure(figsize (8, 4))plt.plot(range(num_epochs), train_losses, labelTrain)plt.plot(range(num_epochs), test_losses, labelTest)plt.title({0} lr_scheduler.format(With if with_scheduler else Without))plt.legend()# plt.ylim((1,2))plt.show()执行结果 没有使用学习率自动调节时 使用了学习率自动调节 结论 使用了学习率自动调节学习的速度更快收敛速度更快。 常见学习率调节器 ## 学习率衰减例如每训练 100 次就将学习率降低为原来的一半 scheduler torch.optim.lr_scheduler.StepLR(optimizeroptimizer, step_size100, gamma0.5) ## 指数衰减法每次迭代将学习率乘上一个衰减率 scheduler torch.optim.lr_scheduler.ExponentialLR(optimizeroptimizer,gamma0.99) ## 余弦学习率调节optimizer 初始学习率为最大学习率eta_min 是最小学习率T_max 是最大的迭代次数 scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizeroptimizer, T_max100, eta_min0.00001) ## 自定义学习率通过一个 lambda 函数自定义实现学习率调节器 scheduler torch.optim.lr_scheduler.LambdaLR(optimizeroptimizer, lr_lambdalambda epoch: 0.99 ** epoch) ## 预热 warmup_steps 20 scheduler torch.optim.lr_scheduler.LambdaLR(optimizeroptimizer, lr_lambdalambda t: min(t/warmup_steps, 0.001))Links PyTorch学习率调整策略.ipynb6.2 动态调整学习率【学习率】torch.optim.lr_scheduler学习率10种调整方法整理11.11. 学习率调度器Pytorch – 手动调整学习率以及使用torch.optim.lr_scheduler调整学习率
http://www.dnsts.com.cn/news/32710.html

相关文章:

  • 古镇建网站公司wordpress 双分页
  • 简约型网站开发西南交通建设集团股份有限公司网站
  • 电商网站开发面临的技术问题给我一个网站好吗
  • 安卓手机网页视频怎么下载廊坊seo扣费
  • 网站开发要网站要能被搜到需要做推广嘛
  • 上海网站设计公司网wordpress 文件说明
  • 企业网站建设框架图汽配信息门户网站模板
  • 临沂住房和城乡建设局网站做网站的主要内容
  • 建设网站上海市wordpress调用随机文章代码 | wordpress啦!
  • wordpress充值会员重庆企业网站seo
  • 云网站后台成都做整站优化
  • 站长工具综合查询ip国外vps
  • 北京网站备案在哪中企动力企业电子商务
  • 网站做伪原创收录自己做网赌网站
  • 网站开发环境配置难如何部置网站到iis
  • 夏邑网站建设网站做微信公众号
  • 郑州网站 建设南宁建设网站制作
  • 网站空间wordpress资源下载
  • 宣讲家网站官德修养与作风建设263企业邮箱登录邮箱
  • 广东哪家网站建设后台管理便捷wordpress页面添加图片不显示
  • 有模板了怎么建设网站龙采网站建设资源分享平台
  • 广东建设人才网站做网站卖广告挣几百万
  • 如何建立一家公司网站wordpress 博客 推荐
  • 论坛网站开发语言dede中英文网站
  • thinkphp 显示第三方网站图片住房和城乡建设部投诉电话
  • 网页制作网站教程代理网站建设公司
  • 怎么设计门户网站wordpress应用
  • 网站建设费1万多入什么科目建站平台企业排名
  • 有没有能帮人快速网站备案的机构建设银行官网招聘网站
  • 哪个网站找住宿的便宜建设网站需要什么设施?