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实现DES加密解密方法实例详解
Jun 30 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
windows下python和pip安装教程
May 25 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
Python 通过打码平台实现验证码的实现
May 13 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
python join方法使用详解
Jul 30 Python
python logging添加filter教程
Dec 24 Python
K最近邻算法(KNN)---sklearn+python实现方式
Feb 24 Python
详解Python yaml模块
Sep 23 Python
Matlab如何实现矩阵复制扩充
Jun 02 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
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
微信小程序中转义字符的处理方法
2019/03/28 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Python 专题三 字符串的基础知识
2017/03/19 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
浅谈django的render函数的参数问题
2018/10/16 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
买房子个人收入证明
2014/01/16 职场文书
服装采购员岗位职责
2014/03/15 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL