参考链接:

TF中optimizor源码:

https://blog.csdn.net/Huang_Fj/article/details/102688509

如何累加梯度进行反向:

https://stackoverflow.com/questions/46772685/how-to-accumulate-gradients-in-tensorflow

https://blog.csdn.net/weixin_41560402/article/details/106930463

问题背景及解决:

在显卡资源有限的情况下,想要增加batch_size的大小,于是可以想到将一个大的batch分解成许多的mini_batch前传,并同时将梯度累加,达到batch_size大小之后反向跟新梯度。

操作也很简单,实际上就是将optimizor分解为compute_gradients和apply_gradients两步,并在第一步之后累加梯度即可,具体可以看参考链接里面的optimizor解析,这里也贴一下:

如何进行梯度累加,并更新梯度可以参考上面两个链接,比较详细

  def minimize(self, loss, global_step=None, var_list=None,gate_gradients=GATE_OP, aggregation_method=None,colocate_gradients_with_ops=False, name=None,grad_loss=None):grads_and_vars = self.compute_gradients(loss, var_list=var_list, gate_gradients=gate_gradients,aggregation_method=aggregation_method,colocate_gradients_with_ops=colocate_gradients_with_ops,grad_loss=grad_loss)vars_with_grad = [v for g, v in grads_and_vars if g is not None]if not vars_with_grad:raise ValueError("No gradients provided for any variable, check your graph for ops"" that do not support gradients, between variables %s and loss %s." %([str(v) for _, v in grads_and_vars], loss))return self.apply_gradients(grads_and_vars, global_step=global_step,name=name)

TF实现多minibatch梯度累加及反向更新相关推荐

  1. 深度学习笔记--pytorch从梯度下降到反向传播BP到线性回归实现,以及API调用和手写数据集的实现

    梯度下降和反向传播 目标 知道什么是梯度下降 知道什么是反向传播 1. 梯度是什么? 梯度:是一个向量,导数+变化最快的方向(学习的前进方向) 回顾机器学习 收集数据 x x x ,构建机器学习模型 ...

  2. 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例

    本文知识点: 什么是 mini-batch 梯度下降 mini-batch 梯度下降具体算法 为什么需要 mini-batch 梯度下降 batch, stochastic ,mini batch 梯 ...

  3. Mini-batch 梯度下降 与Tensorflow中的应用

    mini-batch在深度学习中训练神经网络时经常用到,这是一种梯度下降方法,可以很快的降低cost,接下来系统介绍一下. 1. 什么是 mini-batch梯度下降 先来快速看一下BGD,SGD,M ...

  4. 2.1 Mini-batch 梯度下降-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.15 总结 回到目录 2.2 理解 mini-batch 梯度下降法 Mini-batch 梯度下降 (Mini-batch Gradient Descent) 本周将学 ...

  5. Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步主卡保存梯度累加多卡测试inference随机种子seed)

    DDP的使用非常简单,因为它不需要修改你网络的配置.其精髓只有一句话 model = DistributedDataPrallel(model, device_ids=[local_rank], ou ...

  6. Gradient Accumulation 梯度累加 (Pytorch)

    我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响.一定条件下,batch_size设置的越大,模型就会越稳定.batch_size的值通常设置在 8-32 之间,但 ...

  7. 通俗理解深度学习梯度累加(Gradient Accumulation)的原理

    首先你得明白什么是梯度,可以看我之前写的一篇博客 : 微分与梯度的概念理解 本质上,梯度是一种方向导数,是一个矢量,因此这里的梯度累加并不是简单的相加,而是类似于初高中物理学的力的合成,梯度作为一种方 ...

  8. pytorch多gpu DataParallel 及梯度累加解决显存不平衡和显存不足问题

      最近在做图像分类实验时,在4个gpu上使用pytorch的DataParallel 函数并行跑程序,批次为16时会报如下所示的错误:   RuntimeError: CUDA out of mem ...

  9. 神经网络之Mini-Batch梯度下降

    传统的梯度下降算法,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度.这种梯度下降法叫做这称为Batch gradient descent(BDG).我们知道 Batch 梯度下降的 ...

最新文章

  1. aix oracle11g 静默安装包,10g for AIX 静默安装
  2. FSWD_2_JavaScript
  3. 数组公式基本功修炼之数组扩充
  4. zabbix 监控 tomcat/jvm性能
  5. 2017 开源软件排行_2017年政府和公民如何使用开源解决人类问题
  6. 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
  7. STM32工作笔记0024---什么是电流,什么是电压,什么是电阻,电阻的作用
  8. 以太坊2.0存款合约地址余额28.87万ETH,进度达55%
  9. CSS opacity - 实现图片半透明效果
  10. matlab函数紫色代码,MATLAB 语法高亮颜色设置 - MATLAB - MathWorks 中国
  11. 最新kali之bulk_extractor
  12. 物联网下的智慧停车 让智能化找到车位
  13. 使用Proxmox 和 Deskpool 搭建桌面云系统
  14. 微信小程序实现3D轮播图
  15. MySQL三 插入语句包含查询语句
  16. 㳟祝202205026 gerrit 公司9周年生日
  17. VirtualBox 虚拟机软件
  18. base64编码解码方法
  19. 计算机常用软件实验报告,计算机常用应用软件的安装和使用实验报告.doc
  20. 关于蓝桥杯/STEMA(青少年创意编程组),你应该了解的那些事

热门文章

  1. php能不能动态显示html5,php – 是否可以动态生成html5缓存清单?
  2. 【网络流】网络流小总结
  3. C#自定义开关按钮控件--附带第一个私活项目截图
  4. Day11多态部分-6 【1.4 多态的应用以及注意事项】
  5. 计算1-100之间 所有能被3 不能被 5整除的数 的 个数,每行打印 5 个
  6. linux进入命令是什么,linux进入目录的命令是什么
  7. 【数据结构与算法】之深入解析“穿过迷宫的最少移动次数”的求解思路与算法示例
  8. App设计灵感之十二组精美的数据图表展示App设计案例
  9. HarmonyOS之AI能力·关键字提取
  10. 【数据结构与算法】之连通网络的操作次数的算法