优化器:对参数进行调整,降低误差减小损失
torch.optimizer
parameters(模型参数),lr(float)–>(学习速率)

代码:

import torch
import torchvision.datasets
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear, CrossEntropyLoss
from torch.utils.data import DataLoader# 加载数据集,转换成tensor类型
dataset = torchvision.datasets.CIFAR10(root="./dataset_ts",train=False, download=True,transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset, batch_size=1)# 创建网络
class Tui(nn.Module):def __init__(self):super(Tui, self).__init__()self.model1 = Sequential(Conv2d(3, 32, 5, padding=2),MaxPool2d(2),Conv2d(32, 32, 5, padding=2),MaxPool2d(2),Conv2d(32, 64, 5, padding=2),MaxPool2d(2),Flatten(),Linear(1024, 64),Linear(64, 10))def forward(self, x):x = self.model1(x)return x#定义计算loss
loss = CrossEntropyLoss()tui = Tui()
# 设置优化器
optim = torch.optim.SGD(tui.parameters(), lr=0.01)for epoch in range(20):running_loss = 0.0for data in dataloader:imgs, targets = dataoutputs = tui(imgs)result_loss = loss(outputs, targets)#计算数据集经过神经网络后的输出和真实数据输出之间的误差optim.zero_grad()# 梯度清零————要把网络模型当中每一个 调节 参数梯度 调为0,参数清零result_loss.backward()# 反向传播求解梯度————调用存损失函数的反向传播,求出每个节点的梯度,optim.step()#   更新权重参数————调用优化器,对每个参数进行调优,循环running_loss = running_loss + result_loss#对整体损失的求和print(running_loss)

运行结果:

总得来说,这三个函数的作用是:

先将梯度值归零,:optimizer.zero_grad()
然后反向传播计算得到每个参数的梯度值:loss.backward()
最后通过梯度下降执行一步参数更新:optimizer.step()
由于pytorch的动态计算图,当我们使用loss.backward()和opimizer.step()进行梯度下降更新参数的时候,梯度并不会自动清零。并且这两个操作是独立操作。

基于以上几点,正好说明了pytorch的一个特点是每一步都是独立功能的操作,因此也就有需要梯度清零的说法,如若不显示的进行optimizer.zero_grad()这一步操作,backward()的时候就会累加梯度,也就有了梯度累加这种trick。

参考:
小土堆-优化器
https://blog.csdn.net/Crystalxxtt/article/details/124928155
https://blog.csdn.net/u013250861/article/details/120572718

优化器:torch.optimizer相关推荐

  1. 使用优化器提示(Optimizer Hints)

    优化器提示(Optimizer Hints)可以用在SQL语句中改变执行计划. 理解优化器提示 提示让你作出决定,这决定一般由优化器来作出.作为一个应用的设计者,你知道一些优化器不知道的关于你的数据的 ...

  2. 倭黑猩猩优化器(Bonobo Optimizer, BO)

    文章目录 一.理论基础 1.数学模型 1.1 非用户定义的参数 1.2 正相(PP)和负相(NP) 1.3 分裂-融合社会策略选择倭黑猩猩 1.4 基于不同交配策略创造新的倭黑猩猩 1.4.1 混杂和 ...

  3. 堆优化器(Heap-Based Optimizer, HBO)

    文章目录 一.理论基础 二.数学模型 2.1 公司等级制度 2.2 与直属上司的互动 2.3 同事之间的互动 2.4 员工的自我贡献 2.5 联合公式 三.算法伪代码 四.总结 参考文献 一.理论基础 ...

  4. 海马优化器(Sea-Horse Optimizer, SHO)

    文章目录 一.理论基础 1.数学模型 1.1 海马的运动行为 1.2 海马的捕食行为 1.3 海马的繁殖行为 2.算法伪代码 二.仿真实验与结果分析 1.标准函数测试 2.工程问题测试 三.总结 参考 ...

  5. TensorFlow(四)优化器函数Optimizer

    因为大多数机器学习任务就是最小化损失,在损失定义的情况下,后面的工作就交给了优化器.因为深度学习常见的是对于梯度的优化,也就是说,优化器最后其实就是各种对于梯度下降算法的优化. 常用的optimize ...

  6. Tensorflow 优化器(optimizer)

    所谓的优化器,就是tensorflow中梯度下降的策略,用于更新神经网络中数以百万的参数.工程师们除了在不断的推出新的神经网络的结构以外,还在不断的推出新的参数更新的策略,在这篇博客中,我们就列举te ...

  7. Oracle - 优化器(Optimizer)- 01概念

    Oracle里的优化器 Oracle市场占有率近50%,是使用范围最广的关系型数据库(RDBMS) 对于关系型数据库的应用系统而言,SQL语句的好坏会直接影响系统的性能,很多系统性能很差最后发现都是因 ...

  8. 【源码】均衡优化器Equilibrium Optimizer(EO)

    EO是受控制体积质量平衡的启发来估计动态和平衡状态的. EO is inspired by control volume mass balance to estimate both dynamic a ...

  9. 深度学习中常用优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

    本文转载自:https://www.cnblogs.com/guoyaohua/p/8542554.html 在机器学习.深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagr ...

  10. 深度学习基础之优化器(optimizer)的介绍

    文章目录 前言 SGD(随机梯度下降法) Momentum AdaGrad RMSprop Adam MNIST手写数据集四种方法对比 总结 参考 前言 神经网络的学习的目的是找到使损失函数的值尽可能 ...

最新文章

  1. DataFrame类型数据的主要处理方法
  2. C#正则表达式提取文本中以逗号间隔的数据
  3. 可逆加密算法 php,php可逆加密的方法及原理
  4. 内卷严重?加班多?给几条程序员都适用的建议
  5. 【知识小课堂】mongodb 之 查询关键词使用
  6. 2021年全球营销趋势报告
  7. Impala如何支持array<string> 解决问题
  8. linux cpp建立文件夹,Linux小知识之CMake创建工程的一般流程
  9. 很值得学习的java 画图板源码
  10. 【语音处理】基于matlab噪声信号功率谱【含Matlab源码 1712期】
  11. 火车票_ _购买卧铺下铺的总结
  12. 在Ubuntu22.04中安装微信、QQ
  13. 补丁(patch)的制作与应用
  14. 微信小程序 - 公农历通用时间选择器组件
  15. TDengine 入门教程⑧——数据库管理工具 | DBeaver 连接 TDengine
  16. 网络传输协议原理透析
  17. 剑指 Offer II 080. 含有 k 个元素的组合
  18. c++计算二维数组的鞍点
  19. aurora(极光) vpn查看代理ip和端口
  20. 学习推荐:PS爱好者和设计师常看这些网站,实现自我提升

热门文章

  1. 【读书笔记】商业自传-耐克科技,鞋狗:耐克创始人菲尔.奈特亲笔自传_2020.06.01
  2. js清除cookie有时无法清除
  3. GAN 生成对抗网络(一)
  4. 首批最佳骑行路线揭晓
  5. ntohs, ntohl, htons,htonl inet_aton等详解
  6. linux用命令下载图片,Linux命令行中采集指定页面的图片地址及图片下载
  7. canal1.1.5 配置kaka
  8. Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】
  9. 全球与中国便携式USB摄像机市场现状及未来发展趋势(2022)
  10. 福建力得温控器_福建力得干变温控器LD-B10-10D、LD-B10-10F、LD-B10-10E系列高精度变压器温度控制器...