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 相关文章推荐
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
轻松实现python搭建微信公众平台
Feb 16 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
selenium+python截图不成功的解决方法
Jan 30 Python
使用Python实现将list中的每一项的首字母大写
Jun 11 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
Python退出时强制运行一段代码的实现方法
Apr 29 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Python命令行参数argv和argparse该如何使用
Feb 08 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的十大要点(上)
2009/02/04 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
Vue实现圆环进度条的示例
2021/02/06 Vue.js
python实现网页链接提取的方法分享
2014/02/25 Python
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
python批量修改xml属性的实现方式
2020/03/05 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
2014年人事工作总结范文
2014/11/19 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android