对TensorFlow中的variables_to_restore函数详解


Posted in Python onJuly 30, 2018

variables_to_restore函数,是TensorFlow为滑动平均值提供。之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮。我们也知道,其实在TensorFlow中,变量的滑动平均值都是由影子变量所维护的,如果你想要获取变量的滑动平均值需要获取的是影子变量而不是变量本身。

1、滑动平均值模型文件的保存

import tensorflow as tf
 
if __name__ == "__main__":
 v = tf.Variable(0.,name="v")
 #设置滑动平均模型的系数
 ema = tf.train.ExponentialMovingAverage(0.99)
 #设置变量v使用滑动平均模型,tf.all_variables()设置所有变量
 op = ema.apply([v])
 #获取变量v的名字
 print(v.name)
 #v:0
 #创建一个保存模型的对象
 save = tf.train.Saver()
 sess = tf.Session()
 #初始化所有变量
 init = tf.initialize_all_variables()
 sess.run(init)
 #给变量v重新赋值
 sess.run(tf.assign(v,10))
 #应用平均滑动设置
 sess.run(op)
 #保存模型文件
 save.save(sess,"./model.ckpt")
 #输出变量v之前的值和使用滑动平均模型之后的值
 print(sess.run([v,ema.average(v)]))
 #[10.0, 0.099999905]

上面的代码,是如何来保存一个滑动平均值的模型文件,之前有介绍过滑动平均值和模型文件的保存,所以这里就不再重复了。

2、滑动平均值模型文件的读取

v = tf.Variable(1.,name="v")
 #定义模型对象
 saver = tf.train.Saver({"v/ExponentialMovingAverage":v})
 sess = tf.Session()
 saver.restore(sess,"./model.ckpt")
 print(sess.run(v))
 #0.0999999

对于模型文件的读取,在上一篇博客中有介绍过,这里特别需要注意的一个地方就是,在使用tf.train.Saver函数中,所传递的模型参数是{"v/ExponentialMovingAverage":v}而不是{"v":v},如果你使用的是后面的参数,那么你得到的结果将是10而不是0.09,那是因为后者获取的是变量本身而不是影子变量。是不是感觉使用这种方式来读取模型文件的时候,还需要输入一大串的变量名称。

3、variables_to_restore函数的使用

v = tf.Variable(1.,name="v")
 #滑动模型的参数的大小并不会影响v的值
 ema = tf.train.ExponentialMovingAverage(0.99)
 print(ema.variables_to_restore())
 #{'v/ExponentialMovingAverage': <tf.Variable 'v:0' shape=() dtype=float32_ref>}
 sess = tf.Session()
 saver = tf.train.Saver(ema.variables_to_restore())
 saver.restore(sess,"./model.ckpt")
 print(sess.run(v))
 #0.0999999

通过使用variables_to_restore函数,可以使在加载模型的时候将影子变量直接映射到变量的本身,所以我们在获取变量的滑动平均值的时候只需要获取到变量的本身值而不需要去获取影子变量。

以上这篇对TensorFlow中的variables_to_restore函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常用列表数据结构小结
Aug 06 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
Python谱减法语音降噪实例
Dec 18 Python
Numpy之reshape()使用详解
Dec 26 Python
Django权限设置及验证方式
May 13 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 #Python
tensorflow 打印内存中的变量方法
Jul 30 #Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 #Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 #Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 #Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 #Python
对TensorFlow的assign赋值用法详解
Jul 30 #Python
You might like
PHP 危险函数解释 分析
2009/04/22 PHP
php实现记事本案例
2020/10/20 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
python采用getopt解析命令行输入参数实例
2014/09/30 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
使用python画社交网络图实例代码
2019/07/10 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Python小白垃圾回收机制入门
2020/06/09 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
幼儿园数学教学反思
2014/02/02 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
摄影展策划方案
2014/06/02 职场文书
财务审计整改报告
2014/11/06 职场文书
管理人员岗位职责
2015/02/14 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
员工年度工作总结2015
2015/05/18 职场文书
个人催款函范文
2015/06/23 职场文书
小数乘法教学反思
2016/02/22 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
吃通javascript正则表达式
2021/04/21 Javascript