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中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
python xpath获取页面注释的方法
Jan 14 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
Apr 25 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
Django实现网页分页功能
Oct 31 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
Python基于内置函数type创建新类型
Oct 22 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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中的一些数组排序方法分享
2012/07/20 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
JavaScript Archive Network 集合
2007/05/12 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
初识Node.js
2015/03/20 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
vue按需加载实例详解
2019/09/06 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python实现DES加密解密方法实例详解
2015/06/30 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
新员工入职感言
2014/02/01 职场文书
实验教师岗位职责
2014/02/13 职场文书
项目建议书怎么写
2014/05/15 职场文书
Python测试框架pytest高阶用法全面详解
2022/06/01 Python