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实现类似ftp传输文件的网络程序示例
Apr 08 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
Feb 05 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Pytorch之contiguous的用法
Dec 31 Python
python如何删除文件、目录
Jun 23 Python
Python 操作 MySQL数据库
Sep 18 Python
Django项目创建及管理实现流程详解
Oct 13 Python
详解Python流程控制语句
Oct 28 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 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 Try Catch异常测试
2009/03/01 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
Dom与浏览器兼容性说明
2010/10/25 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
python做接口测试的必要性
2019/11/20 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
优秀中专生推荐信
2013/11/17 职场文书
工程业务员工作职责
2013/12/07 职场文书
学徒工职责
2014/03/06 职场文书
工程材料采购方案
2014/05/18 职场文书
2014年业务工作总结
2014/11/17 职场文书
立项申请报告范本
2015/05/15 职场文书
雷锋的故事观后感
2015/06/10 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书