1. AdaGrad算法

花书中截图,随便找了一张。

2.源码

def step(self, closure=None):"""Performs a single optimization step.Arguments:closure (callable, optional): A closure that reevaluates the modeland returns the loss."""loss = Noneif closure is not None:with torch.enable_grad():loss = closure()for group in self.param_groups:for p in group['params']:if p.grad is None:continuegrad = p.grad # 梯度state = self.state[p]state['step'] += 1if group['weight_decay'] != 0:if p.grad.is_sparse:raise RuntimeError("weight_decay option is not compatible with sparse gradients")# grad = grad + weight*gradgrad = grad.add(p, alpha=group['weight_decay'])# 更新学习率时,采用随step递增后的lr# clr = lr/[1-(step-1)*decay)]clr = group['lr'] / (1 + (state['step'] - 1) * group['lr_decay'])if grad.is_sparse: # 判断稀疏性grad = grad.coalesce()  # the update is non-linear so indices must be uniquegrad_indices = grad._indices()grad_values = grad._values()size = grad.size()def make_sparse(values):constructor = grad.newif grad_indices.dim() == 0 or values.dim() == 0:return constructor().resize_as_(grad)return constructor(grad_indices, values, size)state['sum'].add_(make_sparse(grad_values.pow(2)))std = state['sum'].sparse_mask(grad)std_values = std._values().sqrt_().add_(group['eps'])p.add_(make_sparse(grad_values / std_values), alpha=-clr)else:# state['sum']为累计平方梯度#  s = s+ value*grad*gradstate['sum'].addcmul_(grad, grad, value=1)# std = sqrt(sum)+ epsstd = state['sum'].sqrt().add_(group['eps'])# 应用更新# p(t)=p(t-1) - clr*grad/stdp.addcdiv_(grad, std, value=-clr)return loss

Pytorch源码与花书中图略有不同,区别在于,源码中学习率增加decay。

pytorch中AdaGrad优化器源码解读相关推荐

  1. THOR:MindSpore 自研高阶优化器源码分析和实践应用

    摘要:这篇文章跟大家分享下THOR的实践应用.THOR算法的部分内容当前已经在MindSpore中开源 本文分享自华为云社区<MindSpore 自研高阶优化器源码分析和实践应用>,原文作 ...

  2. tensorflow中Adagrad优化器运用

    tensorflow中Adagrad优化器运用 Adagrad优化器引用API:tensorflow.keras.optimizers.Adagrad 代码实现: #Adagrad v_w += tf ...

  3. 一文详解Pytorch中的优化器Optimizer

    本文将结合源码与代码示例详细解析Optimizer的五大方法. 1. 前言 优化器主要用在模型训练阶段,用于更新模型中可学习的参数.torch.optim提供了多种优化器接口,比如Adam.RAdam ...

  4. 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】

    深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...

  5. CloudSim介绍和使用,CloudSim下载,CloudSim在IDEA中配置,CloudSim源码解读

    CloudSim介绍和使用 1. CloudSim简介: 2. CloudSim提供了以下新的特点: (1)支持大型云计算的基础设施的建模与仿真: (2)一个自足的支持数据中心.服务代理人.调度和分配 ...

  6. xxl-job源码解读:调度器schedule

    xxl-job源码解读:调度器schedule 本文基于xxl-job的2.3.1版本 基本说明 基本原理概述 调用器主要的用于判断定时任务的执行时间,按时调用触发器(trigger),再由触发器去获 ...

  7. redis源码解读二

    上一篇解读了一下SDS,本来觉得完了,但之后想想感觉少点什么,现在我们从使用的角度去梳理一下,大家想想对于字符串, 我们经常使用的有哪几个方法呢?这些方法又是怎么实现的? 在研究上面的几个方法之前我们 ...

  8. pytorch学习十 ---- 优化器

    1.什么是优化器? 首先我们回忆一下机器学习的五大模块:数据.模型.损失函数.优化器.迭代训练 在损失函数中我们会得到一个loss值,即真实标签与预测标签的差异值,对于loss我们通常会采用pytor ...

  9. Pytorch框架之优化器 Optimizer

    Pytorch框架之优化器 Optimizer 基本用法 优化器主要是在模型训练阶段对模型可学习参数进行更新, 常用优化器有 SGD,RMSprop,Adam等 优化器初始化时传入传入模型的可学习参数 ...

最新文章

  1. zabbix 安装配置介绍
  2. Android Monkey的使用
  3. SQLALCHEMY_DATABASE_URI格式实例
  4. Alsa里面恶心的DAPM
  5. 高级语言程序设计c 华南理工,华南理工大学高级语言程序设计(C)期末练习题
  6. 接口测试——Jmeter各部件执行顺序
  7. kappa一致性检验教程_一致性检验(kappa一致性分析)
  8. 2022聚合工艺操作证考试题模拟考试平台操作
  9. Shopee本地店和跨境店物流及收款方式介绍
  10. JavaScript权威指南7(四) 第十一章 JavaScript 标准库
  11. 关于51CTO被脱裤,几点关于密码的建议
  12. 组原5_指令流水线影响因素和流水线分类
  13. 这100佳创新互联网公司值得你去
  14. 什么叫做石英表_石英表是什么意思?
  15. 《有限与无限的游戏》读书笔记
  16. 访问非法内存 越界等
  17. 【网络安全】如何在Apache 安装开源 WAF
  18. Pandas读书笔记
  19. golang中的select原理解析
  20. 多闪:微信说你的头像不属于你!

热门文章

  1. 2023年十大人工智能技术将发生转变
  2. 沙漠之鹰和战术匕首--两款前端极简模板引擎
  3. Linux的长连接设置
  4. 2020美赛B题解题思路(The Longest Lasting Sandcastle(s))
  5. 2021最新去水印小程序源码
  6. 名帖361 岳飞 草书《吊古战场文》
  7. w10计算机运行特别卡,解决win10电脑运行卡顿等问题,用这7种优化技巧,提高电脑性能...
  8. C语言中 “重定义;不同的基类型” 的错误
  9. java-php-python-ssm郑工社团交流服务信息平台计算机毕业设计
  10. 物流接口,自己网上拔下来的