对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 相关文章推荐
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
python opencv实现运动检测
Jul 10 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 Python
Django Form设置文本框为readonly操作
Jul 03 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
网页打开自动最大化的js代码
2012/08/22 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
深入学习Python中的装饰器使用
2016/06/20 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
答题辅助python代码实现
2018/01/16 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
使用Python写一个小游戏
2018/04/02 Python
Numpy之文件存取的示例代码
2018/08/03 Python
大数据分析用java还是Python
2020/07/06 Python
django和flask哪个值得研究学习
2020/07/31 Python
Python 中如何写注释
2020/08/28 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
个人求职信范文分享
2014/01/06 职场文书
高中体育教学反思
2014/01/29 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
法人授权委托书格式
2014/04/08 职场文书
公司委托书怎么写
2014/08/02 职场文书
孩子教育的心得体会
2014/09/01 职场文书
公证书格式
2015/01/23 职场文书
校运会新闻稿
2015/07/17 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
python周期任务调度工具Schedule使用详解
2021/11/23 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL