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开发微信支付的注意事项
Aug 19 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
python基础之入门必看操作
Jul 26 Python
Python实现的矩阵类实例
Aug 22 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
Python机器学习logistic回归代码解析
Jan 17 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
python scrapy重复执行实现代码详解
Dec 28 Python
opencv python如何实现图像二值化
Feb 03 Python
python圣诞树编写实例详解
Feb 13 Python
python实现PCA降维的示例详解
Feb 24 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
咖啡的传说和历史
2021/03/03 新手入门
一篇入门的php Class 文章
2007/04/04 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
python批量同步web服务器代码核心程序
2014/09/01 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Django 自定义分页器的实现代码
2019/11/24 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
2014年办公室个人工作总结
2014/11/12 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers