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中使用不同编码读写txt文件详解
May 28 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
Python实现的计数排序算法示例
Nov 29 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
django session完成状态保持的方法
Nov 27 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
python实现词法分析器
Jan 31 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
树莓派实现移动拍照
Jun 22 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 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 smarty函数扩展
2010/03/15 PHP
PHP输出日历表代码实例
2015/03/27 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
详解php用static方法的原因
2018/09/12 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
javascript处理table表格的代码
2010/12/06 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
Python中字典的基本知识初步介绍
2015/05/21 Python
python2.7的编码问题与解决方法
2016/10/04 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
python内置模块collections知识点总结
2019/12/19 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
试述DBMS的主要功能
2016/11/13 面试题
中式婚礼主持词
2014/03/13 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
分居协议书范本
2014/11/03 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
创业计划书之甜品店
2019/09/18 职场文书
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python