对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下载FTP上的文件夹的实现代码
Feb 10 Python
python基础教程之基本内置数据类型介绍
Feb 20 Python
Python实现PS图像明亮度调整效果示例
Jan 23 Python
Python查看微信撤回消息代码
Jun 07 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 Python
在python中做正态性检验示例
Dec 09 Python
解决python replace函数替换无效问题
Jan 18 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
浅谈Keras中shuffle和validation_split的顺序
Jun 19 Python
如何在Python中妥善使用进度条详解
Apr 05 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 写文本日志实现代码
2010/05/18 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
详解React中setState回调函数
2018/06/14 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
详解Python IO口多路复用
2020/06/17 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
公务员职业生涯规划书范文  
2014/01/19 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
早会主持词
2014/03/17 职场文书
企业管理标语
2014/06/10 职场文书
法院授权委托书范文
2014/08/02 职场文书
租赁协议书
2015/01/27 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang