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中使用mysql数据库详细介绍
Mar 27 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
python操作kafka实践的示例代码
Jun 19 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python如何使用字符打印照片
Jan 03 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
python实现简单坦克大战
Mar 27 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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
浅谈PHP语法(1)
2006/10/09 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
node.js中watch机制详解
2014/11/17 Javascript
angular.bind使用心得
2015/10/26 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
Python类的基础入门知识
2008/11/24 Python
Django验证码的生成与使用示例
2017/05/20 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python后端接收前端回传的文件方法
2019/01/02 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
基于pandas中expand的作用详解
2019/12/17 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
社团活动策划书范文
2014/01/09 职场文书
病媒生物防治方案
2014/05/13 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书