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之入门(三)序列
May 25 Python
Python中的random()方法的使用介绍
May 15 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
浅析使用Python操作文件
Jul 31 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
Python TKinter如何自动关闭主窗口
Feb 26 Python
Python生成器实现简单"生产者消费者"模型代码实例
Mar 27 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 Python
Python中文纠错的简单实现
Jul 07 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
greybox——不开新窗口看新的网页
2007/02/20 Javascript
js href的用法
2010/05/13 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
python图片验证码生成代码
2016/07/02 Python
Python进阶篇之字典操作总结
2016/11/16 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python-opencv 双线性插值实例
2020/01/17 Python
简单了解django文件下载方式
2020/02/10 Python
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
幼儿园教研活动方案
2014/01/19 职场文书
学校消防演习方案
2014/02/19 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
党支部评议意见
2015/06/02 职场文书
机器人总动员观后感
2015/06/09 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js