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 re正则表达式模块(Regular Expression)
Jul 16 Python
Python创建模块及模块导入的方法
May 27 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
python中update的基本使用方法详解
Jul 17 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
Python3标准库之dbm UNIX键-值数据库问题
Mar 24 Python
Python3 webservice接口测试代码详解
Jun 23 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
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
react-native android状态栏的实现
2018/06/15 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python编程中的反模式实例分析
2014/12/08 Python
python使用mysql数据库示例代码
2017/05/21 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
导游的职业规划书范文
2013/12/27 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
采购员工作总结范文
2015/08/12 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL