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. internal heap limit reached问题的解决
  2. oracle pivoting insert 用法简介
  3. PyTorch随笔-0
  4. android 解决String.format多语言存在的问题
  5. 创维37K05HR黑屏有声音故障维修
  6. Android测试写入文本Log
  7. 在Firefox 58中,WebAssembly组件性能提升了10倍
  8. 惠普打印机只打印一半_惠普打印机如何安装 惠普打印机加墨方法【介绍】
  9. 纽微特纪事:吾是如何被架空的(各位引以为戒)
  10. 各厂商服务器存储默认管理口登录信息(默认IP、用户名、密码)收集
  11. python+selenium从excel读取成语到谷歌搜索得到搜索结论数
  12. wps怎么关闭修改痕迹_WPS文字中如何保留修改痕迹
  13. 华为交换机基于IP地址划分VLAN配置实验
  14. 别再让「聪明」害了00后!
  15. 医学影像后处理服务器系统,医学影像后处理的应用
  16. 【blue bridge cup】笔记
  17. python re正则匹配_python—RE正则表达式
  18. Linux下烧写工具DNW和USB驱动安装
  19. int8 和 uint8 区别
  20. 客户端加密服务器端解密文件,RSA(客户端加密/服务器解密)

热门文章

  1. 第一天(倒数79天)
  2. 机械臂B样条插补+带源代码
  3. Java 线程池原理及四种常用的线程池使用
  4. xfs mysql_XFS文件系统与mysql应用性能测试
  5. Nacos 内存参数修改调优
  6. Synonyms最好的中文近义词工具包
  7. 老菜鸟看软件开发的管理 二
  8. YG-WGI系列堰闸结合测控一体化闸门
  9. 达梦使用常见问题解析
  10. 【Web】CSS(No.32)Css页面布局经典案例(二)《云道商城首页》