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 相关文章推荐
zookeeper python接口实例详解
Jan 18 Python
python字符串常用方法
Jun 14 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
如何使用Python 打印各种三角形
Jun 28 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python各层级目录下import方法代码实例
Jan 20 Python
pycharm 关掉syntax检查操作
Jun 09 Python
python实现代码审查自动回复消息
Feb 01 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
ThinkPHP模板中数组循环实例
2014/10/30 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
python梯度下降法的简单示例
2018/08/31 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python 提取文件指定列的方法示例
2019/08/07 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
英文自我鉴定
2013/12/10 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js