对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中使用PIPE操作Linux管道
Feb 04 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
django框架单表操作之增删改实例分析
Dec 16 Python
解决pycharm同一目录下无法import其他文件
Feb 12 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
python 穷举指定长度的密码例子
Apr 02 Python
python随机模块random的22种函数(小结)
May 15 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
Python实现数据的序列化操作详解
Jul 07 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
php中使用sftp教程
2015/03/30 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
初识Node.js
2015/03/20 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
关于numpy数组轴的使用详解
2019/12/05 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
应届生新闻编辑求职信
2013/11/19 职场文书
竞职演讲稿范文
2014/01/11 职场文书
运动会100米解说词
2014/01/23 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python