对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 HTMLParser模块解析html获取url实例
Apr 08 Python
python动态加载包的方法小结
Apr 18 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
python numpy 反转 reverse示例
Dec 04 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
通过python连接Linux命令行代码实例
Feb 18 Python
python爬取天气数据的实例详解
Nov 20 Python
Django如何重置migration的几种情景
Feb 24 Python
pandas 实现将NaN转换为None
May 14 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
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
含有CKEditor的表单如何提交
2014/01/09 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
彻底理解Python list切片原理
2017/10/27 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
python用户管理系统
2018/03/13 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
面试自我介绍演讲稿
2014/04/29 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
节约用水标语
2014/06/11 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
运动会报道稿300字
2014/10/02 职场文书
2014年终个人总结报告
2015/03/09 职场文书
三八妇女节主持词
2015/07/04 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
深入理解Pytorch微调torchvision模型
2021/11/11 Python