Tensorflow的梯度异步更新示例


Posted in Python onJanuary 23, 2020

背景:

先说一下应用吧,一般我们进行网络训练时,都有一个batchsize设置,也就是一个batch一个batch的更新梯度,能有这个batch的前提是这个batch中所有的图片的大小一致,这样才能组成一个placeholder。那么若一个网络对图片的输入没有要求,任意尺寸的都可以,但是我们又想一个batch一个batch的更新梯度怎么办呢?

操作如下:

先计算梯度:

# 模型部分
Optimizer = tf.train.GradientDescentOptimizer(1)
gradient = Optimizer.compute_gradients(loss)  # 每次计算所有变量的梯度
grads_holder = [(tf.placeholder(tf.float32, shape=g.get_shape()), v) for (g, v) in gradient]# 将每次计算的梯度保存
optm = Optimizer.apply_gradients(grads_holder) # 进行梯度更新

# 初始化部分
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

# 实际训练部分
grads = []         # 定义一个空的列表用于存储每次计算的梯度
for i in range(batchsize): # batchsize设置在这里
  x_i = ...       # 输入
  y_real = ...      # 标签
  grad_i = sess.run(gradient, feed_dict={inputs: x_i, outputs: y_real}) #梯度计算
  grads.append(grad_i)  # 梯度存储
# 定义一个空的字典用于存储,batchsize中所有梯度的和
grads_sum = {}     
# 将网络中每个需要更新梯度的变量都遍历一遍  
for i in range(len(grads_holder)): 
  k = grads_holder[i][0] # 得到该变量名
  # 将该变量名下的所有梯度求和,这里也可以求平均,求平均只需要除以batchsize
  grads_sum[k] = sum([g[i][0] for g in grads]) 
# 完成梯度更新
sess.run(optm,feed_dict=grads_sum)

以上这篇Tensorflow的梯度异步更新示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Web框架Pylons中使用MongoDB的例子
Dec 03 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
分享8个非常流行的 Python 可视化工具包
Jun 05 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
超实用的 30 段 Python 案例
Oct 10 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
在Python中通过threshold创建mask方式
Feb 19 Python
简述python Scrapy框架
Aug 17 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 #Python
Tensorflow实现部分参数梯度更新操作
Jan 23 #Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 #Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 #Python
tensorflow 实现打印pb模型的所有节点
Jan 23 #Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 #Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 #Python
You might like
一个用于网络的工具函数库
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
使用python实现画AR模型时序图
2019/11/20 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
python实现取余操作的简单实例
2020/08/16 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
TCP/IP模型的分界线
2012/12/01 面试题
高中生自我评价个人范文
2013/11/09 职场文书
中学生检讨书1000字
2014/10/28 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
同学会邀请函模板
2015/01/30 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
会议主持词通用版
2019/04/02 职场文书
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript