当前位置: 首页 > 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.w-s-a.com/news/334108/

相关文章:

  • 杭州网站设计精选柚v米科技免费的简历制作
  • 网站域名 没有续费做外贸怎样上外国网站
  • 购物网站功能模块设计电子工程网站有哪些
  • 网站营销公司哪家好wordpress主题 破解主题
  • 做网站就是做服务中国效能建设网站
  • 唐河企业网站制作怎么样抖音seo排名软件哪个好
  • 做棋牌网站团队wordpress无限加载
  • 思创医惠网站建设微网站是手机网站吗
  • 宁波海曙网站建设市场营销管理
  • 网站被降权了怎么办做网站网页维护手机App开发
  • 营销型网站建设熊掌号tomcat 网站开发
  • 东莞网站建设seo广州 flash 网站
  • js网站评论框租房网站那些地图区域统计怎么做的
  • 企业门户网站平台建设招标采购文件长沙做网站找哪家好
  • 关于实验室建设的英文网站图文分销系统开发
  • wordpress 媒体库管理自己的网站什么做优化
  • 网站建设基本流程价格厦门seo网站推广
  • 辽宁响应式网站建设价格企业所得税率
  • 网站编辑及seo招聘上海做网站公司做网站的公司
  • 杭州四喜做网站建设么ja.wordpress.org
  • 旅游网站策划书企业公司名字大全
  • 营销型网站的标准郑州新密网站建设
  • 建设网站的公司管理公司网站设计
  • 手机网站有什么区别是什么意思不让网站开发公司进入后台
  • 网站正在建设中_敬请期待做宠物店网站
  • 个体营业执照可以做网站服务吗宣传品牌网站建设
  • 做平台是做网站和微信小程序的好别邯郸捕风科技有限公司
  • 公司做哪个网站比较好巴顿品牌设计官网
  • 济宁北湖建设局网站我要推广
  • mc网站的建设大型网站开发