对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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
八大排序算法的Python实现
Jan 28 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
pandas值替换方法
Jul 10 Python
Python中捕获键盘的方式详解
Mar 28 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
python如何实现视频转代码视频
Jun 17 Python
通过实例解析python创建进程常用方法
Jun 19 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
详解Python 中的 defaultdict 数据类型
Feb 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
php5中类的学习
2008/03/28 PHP
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
php根据年月获取季度的方法
2014/03/31 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
python统计中文字符数量的两种方法
2019/01/31 Python
Python对象的属性访问过程详解
2020/03/05 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
人民教师的自我评价分享
2014/02/21 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏